是否有可能匹配字符串
可以使用一个正则表达式:
7\d?$
这将一个7无论是在末端或在第二到最后的位置相匹配。或者,更确切地说,它匹配字符串末尾的7,可选地跟随另一个数字,在最后两个位置之一转换为7。
我会用7 \ d?$ – gislikonrad 2013-03-15 11:20:54
自发布答案以来,正则表达式经历了4次或5次迭代(每次都有功能);-) – Joey 2013-03-15 11:23:04
您能解释为什么需要问号吗? – Walex 2013-03-15 12:11:07
你可以使用环视来匹配字符串的任意索引,我们将使用后面的(?<=)
来检查我们是否有start of string
,后面跟着固定数量的字符。和前瞻性,以(?=)
检查,我们有字符固定数量的向右依次end of string
。从字符串的开头
指数:
(?<=^.{N})REGEX
你REGEX
将匹配从第N(从零开始)指数,所以如果你想检查是否从左侧的3ND字符x
在以下字符串12x45
那么你可以使用(?<=^.{2})x
其中x
是检查如果字符是x
正则表达式。
使用前瞻,你可以从做到底处于同一起跑线:
REGEX(?=.{N}$)
所以要检查如果任的最后2位数字是7的正则表达式将是7\d?(?=.{0}$)
(这是什么乔伊提出的等价物。但是,正如你所看到的,这对于所有的索引都是适用的(并不是说你应该用这个来代替简单的那个,它只是一个更一般的正则表达式)
如果你想检查第三个(从零开始)左边是x
然后不奇怪你会有x(?=.{2}$)
。
您也可以结合这两个指标之间,例如检查要检查是否在任何一端的第三个数字之间的一切都在12xxxxxx21
x
的任意号码,然后你,你有以下:
(?<=^.{2})x*(?=.{2}$)
注:
如果你只是想要一个匹配/不匹配的正则表达式,那么你可以没有查找变通,但随后你会匹配整条生产线,而不是只有你在REGEX
指定的内容。
e.g:
(?<=^.{2})x*(?=.{2}$)
将匹配xxxxxx
对于上面的例子,在那里为^.{2}x*.{2}$
将是字符串匹配,但它会匹配整个事情(12xxxxxx21
),而不是仅仅xxxxxx
。
一个平凡的正则表达式。 – Will 2013-03-15 11:13:20
您使用哪种语言? – Saju 2013-03-15 11:15:24