我是regex的新手,刚学过一些PHP,但我想学习(一旦这个项目完成,我就开始学习正则表达式了)。我想了解如何组成一个正则表达式,该正则表达式可能包含一些数据,但必须包含其他数据。
我的例子是,比赛可能以数字开始,但不一定要,但是如果需要,我需要数字和下面的两个单词。如果它不是以一个数字开头,只需前两个单词。数据将位于字符串的开头。
以下将与之相匹配:
谢谢
发布于 2012-10-24 11:32:26
像这样的事情应该有效:
^((?:\d+\s)?\w+(?:\s\w+)?)
在编写代码之前,您可以在像http://rubular.com/这样的地方测试它,通常比较容易。
它的意思是:
^ ->行的开头
(?:\d+\s)? ->是一个非捕获组(标记为?:),由几个数字和一个空格组成,因为我们遵循?,所以它是可选的。
\w+(?:\s\w+)? ->几个字母数字字符(查找\w的意思),在非捕获组中可选地后面跟着一个空格和另一个"word“。
整个过程都封装在一个捕获组中,所以组1将包含您的匹配项。
发布于 2012-10-24 11:31:46
使用此regex和多行选项
^(\d+(\s*\b[a-zA-Z]+\b){1,2}|(\s*\b[a-zA-Z]+\b){1,2})Group1包含所需的数据
\d+的意思是匹配数字,即\d 1到多倍+
\s*的意思是匹配空间,即\s 0到多次*
(\s*\b[a-zA-Z]+\b){1,2}匹配1到2个单词。
https://stackoverflow.com/questions/13048307
复制相似问题