在正则表达式中如何在单词之间进行匹配?

时间:2011-11-16 09:26:49

标签: regex

我想写一个正则表达式,它应该匹配中间的字符串。

例如:

我像这样写了正则表达式

^((?!mystring).)*$

这意味着匹配不包含mystring的单词。但我希望正则表达式模式匹配这样。

mystringabcdfrevrgf

正则表达式匹配器应该返回

abcdfrevrgf

我将如何实现这一目标,请提前致谢。

答案:

((?!mystring)(.*))$

3 个答案:

答案 0 :(得分:4)

从您匹配的字符串中删除mystring会不会更容易?

在(Python示例)中:

>>> re.sub("mystring", "", "mystringabcdfrevrgf")
'abcdfrevrgf'

当然mystring实际上是正则表达式,例如

,这当然才有意义
>>> re.sub("my.*?g", "", "xyzmystringabcdfrevrgf")
'xyzabcdfrevrgf'

否则,普通的字符串操作函数当然会更快。

答案 1 :(得分:1)

正则表达式引擎返回的每个匹配都是一个连续的字符串。 给定文本XYZ和XZ的目标,引擎可以返回X和Z作为2个匹配,然后将连接保留给用户,它可以匹配Y并用空字符串替换。它不能直接匹配XZ,因为它不是连续的字符串。如果你看一下正则表达式引擎的内部实现,你会发现每个匹配通常都是用一对整数定义的(matchStartIndex,matchEndIndex或matchStartIndex,matchLength),这使得匹配不可能在中间省略字符。 / p>

答案 2 :(得分:0)

听起来你想要这个:

var str = 'mystringabcdfrevrgf';
var regex = /^mystring(.*)$/;

var result = str.match(regex)[1];
//result contains 'abcdfrevrgf'