У меня есть текстовый файл, обозначающий примечания синглом '
.
В некоторых строках есть две кавычки, но мне нужно получить все из первого экземпляра a '
и перевода строки.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
Подходящим регулярным выражением будет 'char, за которым следует любое количество любых символов [включая нулевые символы], заканчивающиеся маркером конца строки / строки:
И если вы хотите захватить все после символа ', но не включать его в вывод, вы должны использовать:
Это в основном говорит, что дайте мне все символы, которые следуют за символом до конца строки.
Изменить : было отмечено, что $ неявно используется при использовании. * И, следовательно, не требуется строго, поэтому шаблон:
технически корректно, однако лучше указать конкретность и избежать путаницы для последующего обслуживания кода, поэтому я использую $. Я считаю, что всегда лучше декларировать явное поведение, чем полагаться на неявное поведение в ситуациях, когда ясность может быть поставлена под сомнение.
источник
Начиная с одинарной кавычки (
'
), сопоставьте любой символ (.
) ноль или более раз (*
) до конца строки ($
).источник
Когда я пробовал '. * В Windows (Notepad ++), он совпадал со всем после первого до конца последней строки.
Чтобы записать все до конца этой строки, я набрал следующее:
Это захватит только все от 'до конца этой строки.
источник
В вашем примере я бы выбрал следующий шаблон:
используйте многострочные и глобальные параметры, чтобы соответствовать всем случаям.
Чтобы включить перевод строки в совпадение, вы можете использовать:
Но это может пропустить последнюю строку, если в ней нет перевода строки.
Для одной строки, если вам не нужно сопоставлять перевод строки, я бы предпочел использовать:
источник
Это захватит все до 'в обратной ссылке 1 - и все после' в обратной ссылке 2. Возможно, вам придется избегать апострофов, хотя в зависимости от языка (\ ')
Быстрая модификация: если в строке нет '- обратная ссылка 1, все равно должна захватываться вся строка.
источник
https://regex101.com/r/Jjc2xR/1
Я уверен, что это работает, он захватит шестнадцатеричный серийный номер в плохо структурированном многострочном тексте ниже
Я вечный новичок в регулярных выражениях, но я попробую объяснить это
(\ w * (Hex): w *): найти текст в строке, где строка содержит "Hex:"
(. *?) Это второй записанный текст и означает все, что следует после
(? = | $) создать предел, который представляет собой пробел между = и |
Итак, для второй группы у вас будет значение
источник