对你来说可能真的很简单正则表达式大师:)我是正则表达式的菜鸟,只是拿起了一些PHP,但想要学习(一旦这个项目完成,我就会垮掉并破解正则表达式)。 我想了解如何编写可能包含某些数据的正则表达式,但必须包含其他数据。
我的例子是,匹配可以从数字开始,但不必,但如果确实如此,我需要数字和以下2个单词。如果它不是以数字开头,只是前两个单词。数据将位于字符串的开头。
以下内容将匹配:
由于
答案 0 :(得分:7)
这样的事情应该有效:
^((?:\d+\s)?\w+(?:\s\w+)?)
您可以在编码之前在http://rubular.com/之类的地方进行测试,通常更容易。
含义:
^ - >行的开头
(?:\d+\s)?
- >一个非捕获组,(标记为?:),由几个数字和一个空格组成,因为我们按?
跟随它,它是可选的。
\w+(?:\s\w+)?
- >几个字母数字字符(查看\ w表示什么),然后可选地,一个空格和另一个“单词”,再次在非捕获组中。
整个事情都封装在一个捕获组中,因此第1组将包含您的匹配。
答案 1 :(得分:1)
将此正则表达式与多行选项
一起使用^(\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个单词..