reg ex pattern @ + word,不包括 @@ 在单词之前的大小写



我目前面临一些情况,我正在努力使用正则表达式。

就我而言,我在python中使用匹配的模式来替换字典中可用的其他字符串,如下所示:

re.sub(r"@(w+)", lambda m: my_dict[m.group(1)], my_string)

我现在做什么:

pattern = "@(w+)"

以匹配"@"之后的整个单词。例如,"foo@bar foo2"仅与"bar"匹配

  1. 我想添加一个"转义"符号,即如果我有@@,它不会考虑后面的单词。 因此,"foo@@bar foo2"不应该匹配任何东西。

我该怎么做?

  1. >另外,我该如何匹配整个单词,以及下一个单词当且仅当它们用"分隔时"。

例如,匹配"foo@bar.foo2.foo3 foo4"应该匹配"bar.foo2.foo3"。

谢谢

  1. ('Escape symbol'(

使用负面回溯:

(?<!@)@(w+)
  1. (用句点分隔的单词(

匹配紧跟以句点为前缀的任意数量的单词的单词:

(w+(.w+)*)

包装到单个正则表达式中:

(?<!@)@(w+(.w+)*)

演示在这里(正则表达式101(。

最新更新