标签: negative-lookbehind

如果字符串的前面没有某些字符,我该如何匹配?

我创建了以下正则表达式模式,试图匹配长度为6个字符的字符串,以"PRI"或"SEC"结尾,除非string ="SIGSEC".例如,我想匹配ABCPRI,XYZPRI,ABCSEC和XYZSEC,但不匹配SIGSEC.

(\w{3}PRI$|[^SIG].*SEC$)
Run Code Online (Sandbox Code Playgroud)

这是非常接近和一些工作(如果我传入"SINSEC",它返回"NSEC"的部分匹配),但我对它的当前形式没有很好的感觉.此外,我可能需要在"SIG"之后添加更多排除项,并意识到这可能不会扩展得太好.有任何想法吗?

顺便说一句,我在C#中使用System.Text.RegularExpressions.Regex.Match()

谢谢,Rich

.net c# regex negative-lookbehind

4
推荐指数
1
解决办法
1912
查看次数

使用RegEx查找不在另一个单词之后的单词

什么是我应该使用的RegEx模式,以匹配不在另一个特定单词之后的特定单词?

例如:

我正在寻找"xyz"之后没有的"abc",所以以下内容将匹配:

xxabc

p abc
Run Code Online (Sandbox Code Playgroud)

以下不会:

xyz abc
Run Code Online (Sandbox Code Playgroud)

谢谢!

regex negative-lookbehind

4
推荐指数
1
解决办法
206
查看次数

RegExp:想要找到所有不以".html"结尾的链接

我是正则表达式的相对新手(尽管我已成功使用它们多次).我想在文档中找到所有不以".html"结尾的链接我提出的正则表达式是:

href=\"([^"]*)(?<!html)\"
Run Code Online (Sandbox Code Playgroud)

在Notepad ++中,我的编辑器href=\"([^"]*)\"找到所有链接(包括以"html"结尾的链接和不以"html"结尾的链接).为什么不负面的背后工作呢?

我也尝试过前瞻:

href=\"[^"]*(?!html\")
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.

有人可以帮忙吗?

干杯,gro ..

regex notepad++ negative-lookbehind negative-lookahead

3
推荐指数
1
解决办法
5068
查看次数

你能解释为什么这个正则表达式不起作用吗?

>>> d = "Batman,Superman"
>>> m = re.search("(?<!Bat)\w+",d)
>>> m.group(0)
'Batman'
Run Code Online (Sandbox Code Playgroud)

为什么组(0)不匹配超人?这个外观教程说:

(?<!a)b匹配一个前面没有"a"的"b",使用负后看

python regex negative-lookbehind

3
推荐指数
1
解决办法
353
查看次数

正则表达:负面观察和否定之间的差异

来自regular-expressions.info:

\b\w+(?<!s)\b.这绝对不一样\b\w+[^s]\b.适用时Jon's,前者将匹配Jon后者Jon'(包括撇号).我会留给你弄清楚原因.(提示:\ b匹配撇号和s).后者也不会匹配像"a"或"I"这样的单字母单词.

你能解释一下原因吗?

此外,你能说清楚exacly \b做了什么,以及为什么它在撇号和s?之间匹配?

regex negative-lookbehind lookbehind

3
推荐指数
1
解决办法
400
查看次数

Javascript正则表达式:找到一个单词后跟空格字符

我需要javascript正则表达式,它将匹配空格字符后面没有字符并且前面有@的单词,如下所示:

@bug - 找到"@bug",因为它没有空间

@bug和我 - 因为"@bug"之后有空格而一无所获

@bug和@another - 只找到"@another"

@bug和@another等等 - 找不到任何东西,因为这两个单词后跟空格.

救命?补充:从中获取字符串,FF在其末尾放置自己的标记.虽然我基本上只需要以@开头的最后一个单词,但是$(结束字符串)不能使用.

javascript regex negative-lookbehind negative-lookahead

3
推荐指数
2
解决办法
6460
查看次数

Perl正则表达式负面后瞻

试图在正则表达式处理中包围前瞻和后.

假设我有一个列出PID和其他内容的文件.我想构建一个正则表达式来匹配PID格式\ d {1,5},但这也排除了某个PID.

$myself = $$;
@file = `cat $FILE`;
@pids = grep /\d{1,5}(?<!$myself)/, @file;
Run Code Online (Sandbox Code Playgroud)

在这个正则表达式中,我尝试使用(?<!TO_EXCLUDE)构造使用负面后视将数字匹配与排除组合.这不起作用.

样本文件:

456
789
4567
345
22743
root
bin
sys
Run Code Online (Sandbox Code Playgroud)

如果有人能指出我正确的方向,我将不胜感激.

也有兴趣了解这种负面观察是否会在这种情况下最有效.

regex perl negative-lookbehind

3
推荐指数
2
解决办法
1380
查看次数

为什么JavaScript没有外观?

我知道有各种解决办法,但似乎奇怪的是JavaScript中没有一个非常常见/有用的正则表达式功能.

是否有任何理由(性能问题,实施问题等)或者是否在开始时没有添加,现在为时已晚/不需要?

javascript regex negative-lookbehind missing-features lookbehind

3
推荐指数
1
解决办法
380
查看次数

字符串中间的正则表达式负匹配

我有这些字符串(分别检查每一行):

adminUpdate
adminDeleteEx
adminEditXe
adminExclude
listWebsite
listEx
Run Code Online (Sandbox Code Playgroud)

现在我想匹配任何以(admin但不结束)开头但不结束的内容Ex(不区分大小写)

因此在应用正则表达式之后我必须匹配:

adminUpdate
adminEditXe
adminExclude
Run Code Online (Sandbox Code Playgroud)

我当前的正则表达式是,/^admin[a-z]+(?!ex)$/gi但它匹配任何开头admin

php regex negative-lookbehind

3
推荐指数
1
解决办法
1081
查看次数

正则表达式查找不在行首的双空格

我正在努力处理旧的“格式化”代码,其中添加了大量空格来排列 = 等:

  if (!This.RevData.Last().Size() eq 0) then
    !DocRev   = '?'
    !Status   = '?'
    !RevCode  = '?'
  else
    !Pad      = !This.RevData.Last()[1]
    !DocRev   = !Pad[2]
    !Status   = !This.GenUtil.If((!Pad[3] eq 'UA'), '' , !Pad[3])
    !RevCode  = !This.GenUtil.If((!Pad[6] eq ''  ), '?', !Pad[6])
  endif
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它实际上是有一定意义的,但大多数情况下,代码已被修改为一种状态,使空白更加混乱而不是有用

我想做的是将所有双(或更多)空格替换为单个空格,但我当然希望保留缩进。因此,我正在寻找一个正则表达式来识别不在行开头的双(或更多)空格。我尝试过否定lookbehind,但似乎无法使其工作:

(?<![\n])[\s]{2,}
Run Code Online (Sandbox Code Playgroud)

有什么提示吗?哦,我正在使用 Ultraedit(Perl 正则表达式引擎),因此正则表达式应该是“UE 兼容的”。

编辑:UE不会逐行评估正则表达式的行;换行符只是文档长字符串中的一个字符,这使问题变得有点复杂。

regex code-formatting negative-lookbehind removing-whitespace

2
推荐指数
1
解决办法
1590
查看次数