标签: negative-lookahead

正则表达式匹配以提取多行文本区域 (C#)

我正在寻找以以下格式创建的大文本块中的文本区域:

...
[region:region-name]
multi line
text block
[/region]
...
[region:another-region-name]
more
multi-line text
[/region]
Run Code Online (Sandbox Code Playgroud)

我几乎解决了这个问题

\[region:(?'link'.*)\](?'text'(.|[\r\n])*)\[/region\]
Run Code Online (Sandbox Code Playgroud)

如果我在整个文本中只有一个区域,这会起作用。但是,当有多个时,这只会给我一个块,其中包含在该块的“文本”中的所有其他“区域”。我有一种感觉,这将使用负面展望来解决,但作为正则表达式的非专业人士,我不知道如何修改上述内容以正确处理。有人可以帮忙吗?

c# regex multiline negative-lookahead

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

使用负前瞻错误返回 2 的 Bash 双括号正则表达式比较

在 Bash 4.1 机器上,

我正在尝试使用“双括号[[ expression ]]来使用“ NEGATIVE LOOKAHEAD ”进行正则表达式比较。

我做了“ set +H”来禁用 BASH 变量' !'扩展命令历史搜索。

我想匹配“任何字符串”,除了“ arm-trusted-firmware ”。

set +H
if [[ alsa  =~ ^(?!arm-trusted-firmware).* ]]; then echo MATCH; else echo "NOT MATCH"; fi
Run Code Online (Sandbox Code Playgroud)

我希望这会打印“MATCH”,但它会打印“NOT MATCH”。

查看“双括号”的返回码后,它返回“2”:

set +H
[[ alsa  =~ ^(?!arm-trusted-firmware).* ]]
echo $?
Run Code Online (Sandbox Code Playgroud)

根据 bash 手册,返回值 '2' 表示“正则表达式在语法上不正确”:

可以使用额外的二元运算符 =~,其优先级与 == 和 != 相同。
使用时,运算符右侧的字符串被视为扩展正则表达式并进行相应匹配(如 regex(3) 中所示)。
如果字符串与模式匹配,则返回值为 0,否则为 1。如果正则表达式在语法上不正确,则条件表达式的返回值为 2。

我做错了什么?

在我的原始脚本中,我正在与 STRING 列表进行比较。

当它匹配时,我触发一些函数调用;

当它不匹配时,我会跳过我的动作。

所以,是的,从这个例子中, …

regex bash negative-lookahead square-bracket

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

RegEx匹配没有单个字母分隔符

Medicare资格EDI示例回应是我想要匹配的.

我有一个看起来像这样的字符串:

LN:SMITHbbbbbbbbFN:SAMANTHAbbBD:19400515PD:1BN:123456PN:9876543210GP:ABCDEFGHIJKLMNOID:123456789012345bbbbbPC:123PH:8005551212CD:123456PB:123ED:20060101TD:2070101LC:NFI:12345678FE:20070101FT:20080101

我需要一组看起来像这样的匹配:

Key | Value
-------------------
LN  | SMITHbbbbbbbb
FN  | SAMANTHAbb
BD  | 19400515
... etc

我整天都在处理这个问题,而且似乎无法获得可接受的匹配方案.我打算用for循环编程它,如果我想不出来就找到冒号的索引.

我尝试过使用负向前瞻,但我没有到达任何地方.这是C#,我正在测试时使用这个测试器(.Net)和The Regex Coach(非.Net).

我试过用这个:

([\w]{2})\:(?![\w]{2}\:)
Run Code Online (Sandbox Code Playgroud)

但这只匹配键和它们的冒号,如"LN:","FN:"等.

如果我使用:

([\w]{2})\:(.+?)([\w]{2})\:
Run Code Online (Sandbox Code Playgroud)

它也消耗下一个匹配的两个字符键和冒号,导致我只匹配每个其他键/值对.

有没有办法让我在.Net中使用RegEx正确匹配这些,或者我是否坚持使用更程序化的解决方案?请记住,我不能认为键总是大写字母.它们可能包含数字,但它们总是两个字符,然后是冒号.

提前感谢您提供的任何帮助.

c# regex lookahead negative-lookahead

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

Java Regex不工作 - 为什么?

match.matches()返回false.这很奇怪,因为如果我把这个正则表达式和测试字符串带到rubular.com,则会显示两个匹配项.我究竟做错了什么?

    Pattern regex = Pattern.compile("FTW(((?!ODP).)+)ODP");
    Matcher match = regex.matcher("ZZZMMMJJJOOFTWZMJZMJODPZZZMMMJJJOOOFTWMZJOMZJOMZJOODPZZZMMMJJJOO");

    if (match.matches()) {
        System.out.println("match found");
    }
    else {
        System.out.println("match not found");
    }
Run Code Online (Sandbox Code Playgroud)

java regex string arraylist negative-lookahead

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

perl负面向前看不到大字符串

perl负向前视不适用于大字符串(长度> 40000,在活动perl和cygwin perl,版本5.14).我尝试了相同的代码,mingw perl 5.8.8它停止工作长度> 5000的字符串.

我使用的代码是:

my $str = q(A  B);
my $pattern = '(A)(?:(?!(X)).)*(B)';  
if ( $str =~ m/$pattern/ ) {
    print "matched\n";
}
Run Code Online (Sandbox Code Playgroud)

这适用于perl的所有三个版本.但是当我通过添加空格来增加字符串的长度时,模式会停止匹配.

例如: my $str = q(A ...some 50000 spaces... B);

请帮助.

perl negative-lookahead

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

无法使用负向前瞻进行正则表达式来修复JSON中未转义的引号

我有一些JSON代码,格式如下:

[
  { "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
  { "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi "NAME" jk" },
  ...
]
Run Code Online (Sandbox Code Playgroud)

我需要在"NAME"中的引号前添加反斜杠才能正确解析此JSON.所以我需要上面的字符串看起来像这样:

[
  { "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
  { "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi \"NAME\" jk" }, …
Run Code Online (Sandbox Code Playgroud)

regex json negative-lookbehind negative-lookahead

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

使用正则表达式在不在锚中的页面上查找电话号码

我有此正则表达式表达式,用于搜索电话号码模式:

[(]?\d{3}[)]?[(\s)?.-]\d{3}[\s.-]\d{4}
Run Code Online (Sandbox Code Playgroud)

这与以下格式的电话号码匹配:

123 456 7890
(123)456 7890
(123) 456 7890
(123)456-7890
(123) 456-7890
123.456.7890
123-456-7890
Run Code Online (Sandbox Code Playgroud)

我想扫描整个页面(使用JavaScript)以查找此匹配项,但不包括锚点中已存在的此匹配项。找到匹配项后,我要将电话号码转换为移动设备的点击通话链接:

(123) 456-7890 --> <a href="tel:1234567890">(123) 456-7890</a>
Run Code Online (Sandbox Code Playgroud)

我很确定我需要做一个否定查询。我已经尝试过了,但这似乎不是正确的主意:

(?!.*(\<a href.*?\>))[(]?\d{3}[)]?[(\s)?.-]\d{3}[\s.-]\d{4}
Run Code Online (Sandbox Code Playgroud)

javascript regex negative-lookahead

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

如何在Oracle regexp_like()中进行否定的前瞻,'?!' 没用

查询:

select 1 "val" from dual where regexp_like('ITEM HEIGHT','^(?!ICON).*HEIGHT$'); 
Run Code Online (Sandbox Code Playgroud)

上面的查询没有返回我1。请让我知道如何使用oracle实现负前瞻regexp_like()

注意:请不要在查询中提出任何建议,我很想知道正确的正则表达式可以接受regexp_like()否定超前。而且[^]似乎只逐个字符地求反,而不是整个字符串。

oracle negative-lookahead regexp-like

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

正则表达式:不包含子字符串

我想测试不包含特定子字符串的字符串

示例字符串是:

event2
event23,event1,event67=12
event1,event30
event23
event2
event2,event23
Run Code Online (Sandbox Code Playgroud)

我想匹配不包含event2.

因此,以下字符串应该匹配:
event23,event1,event67=12
event1,event30
event23

到目前为止,我可以event2使用以下表达式匹配 do 包含的字符串:
/^.*(\bevent2\b)/gm

但我不知道如何将其与负面前瞻结合起来。

这似乎不起作用:
/^.*(?!.*(\bevent2\b))/gm

regex negative-lookahead

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

复杂(?)正则表达式:是表达式,而不是另一种表达式

(如果你能做出更好的头衔,请做)

嗨,

我需要确保字符串匹配以下正则表达式:

^[0-9a-zA-Z]{1}[0-9a-zA-Z\.\-_]*$
(Starts with a letter or number, then any number of letters, numbers, dots, dashes or underscores)
Run Code Online (Sandbox Code Playgroud)

但鉴于此,我需要确保它与Guid不匹配,我的Guid匹配reg-ex看起来像这样(显然,这需要在合并结果中否定):

^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$
Run Code Online (Sandbox Code Playgroud)

这里的最后一个要求是它们必须(如果可能的话)合并为单个表达式.

regex lookahead negative-lookahead regex-negation

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

消极的向前看

考虑两种printk函数调用 -

TRACE_BR(TRACE ,    "END. rc = %d\n", rc );

TRACE_BR(TRACE, "Value = %s", string );
Run Code Online (Sandbox Code Playgroud)

我正在编写一个正则表达式来匹配像上面这样的函数调用,它们%内部包含字符串参数,但如果字符串END也在里面则不应该匹配.

我用这样的负面预测

TRACE_BR\(TRACE.*?(?!END)%.*
Run Code Online (Sandbox Code Playgroud)

我希望这个正则表达式只匹配第二个函数调用,但它也匹配第一个函数调用.

我猜我在贪婪的地方出错了*.

regex negative-lookahead regex-lookarounds

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

Perl正则表达式匹配字符串没有结束的东西

什么正则表达式会正确匹配这个?我想识别不以特定文本结尾的字符串(_array).我试图使用负向前瞻但无法使其正常工作.(注意显而易见的答案是反向(m {_array $}),但有一个原因我不想这样做).TIA

 use strict;
 use warnings;
 while(<DATA>) {
    #
    ## If the string does not end with '_array' print No, otherwise print Yes
    m{(?!_array)$} ? print "No  = " : print "Yes = ";
    print;
 }
 __DATA__
 chris
 hello_world_array
 another_example_array
 not_this_one
 hello_world
Run Code Online (Sandbox Code Playgroud)

我想要的输出应该是:

 No  = chris
 Yes = hello_world_array
 Yes = another_example_array
 No  = not_this_one
 No  = hello_world
Run Code Online (Sandbox Code Playgroud)

regex perl negative-lookahead

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

JS的外观支持是什么?如何更换?

我有一个字符串,我想替换所有不跟随/跟随任何其他i的'i',并将其替换为'z`.我知道有负面的前瞻和后视.

结果应该是:

i => z
iki => zkz
iiki => iikz
ii => ii
iii => iii
Run Code Online (Sandbox Code Playgroud)

我试着用这个:

/(?<!i)i(?!i)/gi
Run Code Online (Sandbox Code Playgroud)

它失败并抛出一个错误:Invalid regex group.

然而

/i(?!i)/gi
Run Code Online (Sandbox Code Playgroud)

工作正常,但匹配第二个"我":"ii".

还有其他方法吗?

如果有的话,对JS中的lookbehind的支持是什么?

javascript regex negative-lookbehind negative-lookahead

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