Regex 正则表达式以确保字符串不完全匹配

Regex 正则表达式以确保字符串不完全匹配,regex,string,match,Regex,String,Match,我想构建一个正则表达式,只有当字符串不完全是“amp”时,它才应该匹配 我想要的是: 此字符串不应匹配: “位于/美国/纽约/amp的场馆” 这些字符串应匹配: “位于/美国/纽约/安菲的场馆” “美国/纽约/露营地点” 我现在的正则表达式是: 场馆在\/([a-zA-Z0-9-+.]+)\/([a-zA-Z0-9-+.]+)\/([a-zA-Z0-9-+.]+) 我试过玩运算符打开和负前瞻: ^(?=amp)([a-zA-Z0-9-+'.]+) 但我想不出来。请帮助。使用 venues-in\

我想构建一个正则表达式,只有当字符串不完全是“amp”时,它才应该匹配

我想要的是:

此字符串不应匹配:
“位于/美国/纽约/amp的场馆”

这些字符串应匹配:
“位于/美国/纽约/安菲的场馆”
“美国/纽约/露营地点”

我现在的正则表达式是:
场馆在\/([a-zA-Z0-9-+.]+)\/([a-zA-Z0-9-+.]+)\/([a-zA-Z0-9-+.]+)

我试过玩
运算符打开和负前瞻:
^(?=amp)([a-zA-Z0-9-+'.]+)

但我想不出来。请帮助。

使用

venues-in\/([a-zA-Z0-9-+'.]+)\/([a-zA-Z0-9-+'.]+)\/(?!amp$)([a-zA-Z0-9-+'.]+)
负前瞻语法是
(?!pattern)
$
用于确保选中的单词完全是不带后缀的
amp

如果您的字符串可能类似于/united states/new york/amp/whatever中的
场馆,请将前瞻调整为
(?!amp(?$)\/)

使用

venues-in\/([a-zA-Z0-9-+'.]+)\/([a-zA-Z0-9-+'.]+)\/(?!amp$)([a-zA-Z0-9-+'.]+)
负先行语法是
(?!pattern)
$
用于确保检查的单词完全是
amp
,没有后缀


如果您的字符串可能类似于/united states/new york/amp/whatever中的
场馆,请将前瞻调整为
(?!amp(?$)\/)

我认为这会起作用

venues-in\/([a-zA-Z0-9\-+'.]+)\/([a-zA-Z0-9\-+'.]+)\/(?!amp$)([a-zA-Z0-9\-+'.]+)

我认为这会奏效

venues-in\/([a-zA-Z0-9\-+'.]+)\/([a-zA-Z0-9\-+'.]+)\/(?!amp$)([a-zA-Z0-9\-+'.]+)

为什么不匹配
\bamp\b
,然后在程序中执行一个不相等的。在Perl中,这将是

if ($string !~ /\bamp\b/) {
    # Do stuff with out amp
}
else {
    # Do stuff with amp
}

为什么不为
\bamp\b
匹配,然后在程序中执行一个不相等的。在Perl中,这将是

if ($string !~ /\bamp\b/) {
    # Do stuff with out amp
}
else {
    # Do stuff with amp
}

哪种语言/引擎?负前瞻性在这里很好,但并不总是受支持。哪种语言/引擎?负前瞻性在这里很好,但并不总是受支持。在字符类中转义破折号
-
。@ToToTo不一定,大多数正则表达式引擎都可以处理范围后的破折号。不过这并不有害。当然,但是它对我来说似乎更干净。尽管如此,它还是被选中了。在字符类中转义破折号
-
。@Toto不一定,大多数正则表达式引擎都可以处理一个范围后的破折号。虽然没有问题。当然,但它对我来说似乎更干净。尽管如此,它被选中了。在字符类中转义破折号
-
。转义破折号
-
in字符类。