标签: negative-lookahead

如何使用行尾文本进行负前瞻工作

我有一个如下的正则表达式:

.{0,1000}(?!(xa7|para(graf))$)
Run Code Online (Sandbox Code Playgroud)

使用Java.我原以为它会导致以下文本失败:

blaparagraf

因为最后发现了paragraf

java regex negative-lookahead

5
推荐指数
2
解决办法
3091
查看次数

寻找连续重复单词时,Python后视正则表达式"固定宽度模式"错误

我有一个单词分隔的文本.,有2个和3个连续重复单词的实例:

My.name.name.is.Inigo.Montoya.You.killed.my.father.father.father.Prepare.to.die-

我需要将它们与正则表达式独立匹配,不包括重复项的重复项.

因为有最大值 这连续3个重复的话

r'\b(\w+)\.+\1\.+\1\b'

成功捕获

father.father.father

但是,为了捕获2个连续重复的单词,我需要确保下一个和前一个单词不一样.我可以做一个负面的预测

r'\b(\w+)\.+\1(?!\.+\1)\b'

但我的尝试是消极的后视

r'(?<!(\w)\.)\b\1\.+\1\b(?!\.\1)'

要么返回一个固定宽度的问题(当我保留+)或其他一些问题.

我应该如何纠正负面的背后

python regex negative-lookahead regex-lookarounds

5
推荐指数
1
解决办法
250
查看次数

如何在正则表达式中结合正面和负面条件?

我对正则表达式相当新,需要一些帮助.我需要在Perl中使用正则表达式过滤一些行.我将把正则表达式传递给另一个函数,所以它需要在一行中完成.

我想只选择包含"too long"但不包含的行"SKIPPING"

这是我的测试字符串:

跳过此债券到期以来太长
TKIPPING这个债券到期,因为太长时间
拍打着这个债券到期以来太长
你好这个期限太长,
这是太长
你好

正则表达式规则应与"太长"的以下内容匹配:


跳过这个债券,因为到期时间太长,因为成熟期过长,所以这个债券的成熟时间过长
你这个成熟期过长
这太久了

它应该跳过:

"你好那里",因为它不包含"太长时间"
"跳过这个债券,因为成熟期过长"因为它包含'跳过'

regex perl lookahead negative-lookahead regex-negation

4
推荐指数
2
解决办法
1973
查看次数

正则表达式:匹配一个字符串到一个模式(可能不存在)

我正在尝试使用Python中的正则表达式解析器来解析XML文档(这是一个有限的集合,所以正则表达式很好!),而且我无法正确匹配注释.

这些注释的格式是<!--This is a comment-->注释本身可以包含各种非字母数字字符(包括' - ')的形式

我想以这样的方式匹配它们,我将注释分解为以下标记:

<!--

This is a comment

-->

开始标记很容易获得,并且我成功地使用另一个正则表达式,但评论正则表达式本身变得过于贪婪并--从结束标记中抓取.我希望这个正则表达式能够获取不一定包含在注释中的字符串,所以它也应该能够<Tag>This is text</Tag>正确地返回This is text.

这是我目前用于文本的正则表达式:

[^<>]+(?!-->)

最终结果是This is a comment--,当我只是想让This is a comment我的其他正则表达式可以抓住-->.这个正则表达式适用于普通标签,但是,由于结束标签上存在'<'并且This is text从我之前的示例中正确返回.

我知道我不能正确地使用负向前瞻.我在这里做错了什么想法?我已经尝试过了[^<>]+(?=-->),但那不符合任何不是这种形式的评论(如普通标签).我认为(?!-->)当它看到那个模式时会停止匹配,但它看起来不像那样,只是继续匹配,直到它看到结束'>'.

为上下文发布一段代码:

xml_scanner = re.Scanner([
    (r"  ",             lambda scanner,token:("INDENT", token)),
    (r"<[A-Za-z\d._]+(?!\/)>",  lambda scanner,token:("BEGINTAG", token)),
    (r"<\/[A-Za-z\d._]+(?!\/)>",  lambda scanner,token:("ENDTAG", token)),
    (r"<[A-Za-z\d._]+\/>",      lambda scanner,token:("INLINETAG", token)),
    (r"<!--",               lambda scanner,token:("BEGINCOMMENT", token)),
    (r"-->",                lambda scanner,token:("ENDCOMMENT", token)), …
Run Code Online (Sandbox Code Playgroud)

python regex negative-lookahead

4
推荐指数
2
解决办法
6408
查看次数

为什么.*(?!Integration)测试匹配FooIntegrationTest?

我正在尝试编写一个正则表达式来运行所有单元测试但不运行集成测试.单元测试命名FooTest,集成测试命名BarIntegrationTest,"Foo"和"Bar"是变量. 我发现这篇文章是关于如何做到的,我已经解决了我的问题.但是,它的解决方案是使用这个正则表达式:

(.(?!Integration))*Test
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个正则表达式不够:

.*(?!Integration)Test
Run Code Online (Sandbox Code Playgroud)

当我尝试第二个正则表达式时,我的集成测试仍在运行.

regex intellij-idea negative-lookahead

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

弹性搜索的负向前瞻性正则表达式

我试图对弹性搜索查询做一个负面的预测,正则表达式是:

(?!.*charge)(?!.*encode)(?!.*relate).*night.*
Run Code Online (Sandbox Code Playgroud)

我要匹配的文字是:

在晚上住宿归还,仍然有建设问题.由于喷洒化学物质导致健康问题并导致眼睛受到刺激.

我没有得到任何幸运.有人能伸出援助之手吗?

ES查询:

  "query": {
    "filtered": {
      "query": {
        "bool": {
          "must_not": [
            {
              "regexp": {
                "message": {
                  "value": "(?!.*charge)(?!.*encode)(?!.*relate).*night.*",
                  "flags_value": 65535
                }
              }
            }
          ]
        }
      },
      "filter": {
        "match": {
          "resNb": {
            "query": "462031152161",
            "type": "boolean"
          }
        }
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

regex negative-lookahead elasticsearch

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

正则表达式:替换正则表达式匹配的部分

使用Vim,Notepad ++或Sublime我希望能够搜索和替换部分匹配.我认为这可以使用负面预测来完成,但我想征求社区的意见.

假设我想在以下示例中将"掉线"事件替换为"后果":

  • 他们担心核衰退和辐射.
  • 有堕落,然后有辐射.
  • 在长崎,一个最大的担忧是失败.
  • 2000年代最好的比赛之一是"失败".

一个反例:

  • 那将超出你的范围.

我想一个明显的匹配模式是:

fall out[^a-z]
Run Code Online (Sandbox Code Playgroud)

但是,使用此匹配替换匹配中的"后果"会产生不良影响,即四个正例中的逗号,空格,句点和尾随引号将被删除.

人们通常如何处理这个问题,以及如何在比赛中保留上下套管?

regex vim negative-lookahead

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

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
查看次数

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

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

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

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

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

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

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

javascript regex negative-lookbehind negative-lookahead

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

如何匹配除一个之外的所有单词?

我正在尝试匹配以PRE开头并以PRE结束的表达式.我正在寻找一个懒惰的匹配,即匹配表达式中的结尾PRE应该是在启动PRE之后找到的第一个.我试图通过负面的前瞻性正则表达式来实现这一点,在RegExr上进行测试:

正则表达式:

PRE(\w|\s)+(?!PRE)
Run Code Online (Sandbox Code Playgroud)

要匹配的表达式:

PRE erp PRE edas PRE
Run Code Online (Sandbox Code Playgroud)

上面的表达式与给定的正则表达式完全匹配,而我原本只期望匹配PRE erp PRE.请建议一个正则表达式,它与表达式的开头和结尾一致.

java regex negative-lookahead

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