RegEx для сопоставления любого символа, кроме только пробела - PullRequest
3 голосов
/ 13 мая 2019

Я пишу класс php для извлечения данных из CSV-файла.Поэтому мне нужна помощь в регулярном выражении.

выборка данных

Data 
Data        
Datatest1
Data test
Data         867$33@!.//()7
Field somthing
Field           

Регулярное выражение

/(?:Data|Field)(.+)/

Это должноне совпадают со строками 1, 2 и 7, потому что после «Данные и поле» в нем есть только пробел и табуляция (пробел)

вот моя ссылка на тестер регулярных выражений https://regex101.com/r/xpG25l/1/

Ответы [ 2 ]

2 голосов
/ 13 мая 2019

Вы можете сделать что-то вроде

(?:Data|Field)\h*\S.*

, требуя \S ( не пробел ) после любого количества \h ( горизонтальный пробел *)1009 *).

См. Обновленную демоверсию

2 голосов
/ 13 мая 2019

Вы можете использовать отрицательный прогноз (?!\h*$), чтобы утверждать, что справа не 0+ раз горизонтальный символ пробела \h*, за которым следует конец строки $

(?:Data|Field)(?!\h*$).+$

Демонстрация регулярных выражений

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

Илииначе в строке test Field somthing будет совпадение для Field somthing

...