Я пытаюсь написать регулярное выражение, соответствующее номерам телефонов, за которыми следует любое количество букв, цифр и возможных символов, пока не найду следующий экземпляр слова Subject.Номер телефона RegEx, за которым следует неизвестный текст, затем слово
Я почти нашел решение, но он содержит номера совпадений перед ним, потому что регулярное выражение слишком неоднозначно. Ну, это и тот факт, что я сосать в регулярном выражении.
В этом примере оно соответствует первому и второму номерам до слова «Субъект», я хочу, чтобы он получил число, самое близкое к слову «Тема», в то время как число еще осталось перед словом. Это может быть несколько экземпляров, которые мне нужно обнаружить внутри документа. Текст может распространяться на несколько строк. Единственная часть, которую мне нужно захватить, - это номер телефона, а остальная часть - группа захвата.
Могу ли я сделать это только в RegEx? Или мне нужно начинать снимать материал на другом языке? Это будет происходить в PHP-скрипте, если это имеет значение.
Пример
RegEx
([0-9]{3}\-[0-9]{3}\-[0-9]{4})(?:\w|\s|\-|\')+\bSubject\b
Раздел:
123-456-7890 - ABC WHAT
MERICA RULES
987-654-3210 - ABC WHAT WORDS MORE WORDS 123456789123
LOREM IPSOM WHO CARES - Subject
Это не работает, если скопировать и вставить свой вклад дважды в регулярное выражение тестер, то 111-111-1111 подобран. https://regex101.com/r/gV1aO3/3 – sudoroot
@ user2078965 Это потому, что у вас есть «Тема» позже в тексте. – andlrc
Это одна из моих проблем, она будет происходить несколько раз в документе, и мне нужно ее обнаружить. – sudoroot