繁体   English   中英

使用正则表达式匹配字符串中的数字和文本

[英]Matching digits and text in a string using regular expression

为什么以下正则表达式中的百分比不匹配

/(^(?:[\d\.]+|first|second|goal))(?:\w+(interval|percent))?/i

输入字符串示例:

10percentRule

/(^(?:[\\ d。] + | first | second | goal))(?: \\ w + (interval | percent))?/ i

w +是这里的问题:您应该使用w *,w +表示1个或多个匹配项,而w *表示0个或多个匹配项; 在您的示例中,第一组捕获数字,然后搜索至少1个字符(w +)间隔或百分比,因此,它不返回任何匹配项。

改用w *,甚至用w *更好? (非贪婪),因此当找到间隔或百分比时,它将停止搜索字符

/(^(?:[\d.]+|first|second|goal))(?:\w*?(interval|percent))?/i

之所以不匹配,是因为\\w+至少需要1个字符char,介于10percent之间。 *零个或多个出现 )替换+一个 或多个出现 ):

(^(?:[\d\.]+|first|second|goal))(?:\w*(interval|percent))?
                                     ^

它会工作。

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM