bon*_*nna 5 php regex numbers cpu-word match
我想匹配整个"单词" - 以数字字符开头并且可能包含特殊字符但不以'%'结尾的单词.
匹配这些:
但不是
我试过这些正则表达式:
(\b\p{N}\S)*)
Run Code Online (Sandbox Code Playgroud)
但是在'12%'中返回"12%"
(\b\p{N}(?:(?!%)\S)*)
Run Code Online (Sandbox Code Playgroud)
但是在'12%'中返回'12'
我可以对\S无视的术语作出例外%吗?或者还要做别的事吗?
我将在PHP中使用它,但只需按照您的意愿编写,我将其转换为PHP.
这符合您的规格:
\b\p{N}\S*+(?<!%)
Run Code Online (Sandbox Code Playgroud)
说明:
\b # Start of number
\p{N} # One Digit
\S*+ # Any number of non-space characters, match possessively
(?<!%) # Last character must not be a %
Run Code Online (Sandbox Code Playgroud)
该占有欲量词 \S*+可以确保正则表达式引擎不会回溯到它已经匹配的非空格字符的字符串.因此,它不会"回馈"a %匹配12内12%.
当然,这也会匹配1!abc,所以你可能希望更具体,而不是\S匹配任何不是空白字符的东西.