RegEx用于匹配除空白

时间:2019-05-13 19:48:47

标签: php regex preg-match regex-negation

我正在编写一个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 个答案:

答案 0 :(得分:2)

您可以使用否定的前行(?!\h*$)来声明右边的内容不是水平空格字符\h*的0+乘以字符串$的结尾

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

Regex demo

如果您的正则表达式应该从字符串的开头开始匹配,则可以在模式后附加^来声明字符串的开头。

否则,在字符串test Field somthing中将有一个匹配项Field somthing

答案 1 :(得分:2)

您可以做类似的事情

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

在任意数量的\S水平空格)之后需要一个\h非空白字符)。

See your updated demo