用于匹配任何字符的正则表达式,仅 white-space

RegEx for matching any char except only white-space

我正在编写 php class 从 csv 文件中提取数据。所以我需要正则表达式方面的帮助。

数据样本

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

正则表达式

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

这不应该匹配第 1,2 和 7 行,因为它在数据和字段

之后只有 space 和制表符(白色space)

这是我的正则表达式测试器 link https://regex101.com/r/xpG25l/1/

您可以使用否定先行 (?!\h*$) 断言右边的内容不是水平空白字符 \h* 后跟字符串结尾的 0+ 次 $

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

Regex demo

如果您的正则表达式应该从字符串的开头开始匹配,您可以将 ^ 附加到模式以断言字符串的开头。

否则在字符串 test Field somthing 中将匹配 Field somthing

你可以这样做

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

要求在任意数量的 \h水平 space).

See your updated demo