Как я могу извлечь все не алфавитно-цифровые символы из входной строки, используя регулярные выражения?

Хотя ответ Денниса Уильямсона абсолютно правильный, он создает подоболочку , что помешает вам установить какие-либо переменные внутри цикла. Вы можете рассмотреть возможность замены процесса следующим образом:

while IFS= read -d '' -r file; do
    grep ' /dev/null && echo "$file" | tee -a embeded_images.txt
done < <(find people -name '*.svg' -print0)

Первый < указывает, что вы читаете из файла, а <(find...) заменяется именем файла (обычно это дескриптор труба), которая возвращает результат из find напрямую. Поскольку while читается из файла вместо канала, ваш цикл может устанавливать переменные, доступные из-за пределов области видимости.

1
задан abatishchev 22 March 2019 в 17:20
поделиться

1 ответ

Используйте метод замены со строкой выбора.

РЕДАКТИРОВАТЬ: После внимательного прочтения я вижу, что вы хотели противоположную строку Вот и то, и другое.

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string Source = @"H)*e/.?l\l{}*o ][W!~`@#""or^-_=+ld!";
            string Trash = @"[^a-zA-Z0-9]";
            string InvertedTrash = @"[a-zA-Z0-9]";

            Output(Source, Trash);
            Console.WriteLine($"{System.Environment.NewLine}Opposite Day!{System.Environment.NewLine}");
            Output(Source, InvertedTrash);
            Console.ReadKey();
        }
        static string TakeOutTheTrash(string Source, string Trash)
        {
            return (new Regex(Trash)).Replace(Source, string.Empty);
        }
        static void Output(string Source, string Trash)
        {
            string Sanitized = TakeOutTheTrash(Source, Trash);
            Console.WriteLine($"Started with: {Source}");
            Console.WriteLine($"Ended with: {Sanitized}");
        }
    }
}
0
ответ дан Display name 22 March 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: