Совпадение между двумя одинарными кавычками и продолжение сопоставления, если в строке появляются две одинарные кавычки или если '.'появляется в середине? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь установить соответствие шаблону регулярного выражения, которое будет совпадать с 'hello' дважды в 'hello'blah blah blah 'hello', но это будет соответствовать полной строке 'hello''hello' и полной строке 'hello''hello', а также полной строке 'hello'.'hello'.

Проще говоря, я хочу начать совпадение, когда есть одинарная кавычка, и продолжать совпадение до тех пор, пока не встретлю другую одинарную кавычку, если сразу после нее нет другой одинарной кавычки или если есть.' после этого, и в этом случае я хочу продолжить сопоставление, пока не обнаружу одинарную кавычку, которая не соответствует этим условиям.

Это то, что мне нужно для сопоставления значений между одинарными кавычками:

\'[^\']*\'

Я уже читал решение здесь: Как заменить одинарные кавычки на две одинарные кавычки, но ничего не делать, если в perl две одинарные кавычки расположены рядом друг с другомоно не совсем соответствует тому, что я ищу, и не может заставить его соответствовать промежуточным вещам.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018
'.*?'(\.?'.*?')*

Если я правильно понимаю вашу потребность, легко составить приведенное выше регулярное выражение.

0 голосов
/ 26 декабря 2018

Вы можете использовать это регулярное выражение:

('[^']+'(?:\.?'[^']+')*)

Он ищет набор символов, заключенных в одинарные кавычки, за которыми, возможно, следует некоторое количество наборов символов, заключенных в одинарные кавычки, возможно, с предшествующей точкой.

Демонстрация на regex101

...