gpt4 book ai didi

python - 我可以使正则表达式负后视断言应用于整个表达式吗?

转载 作者:行者123 更新时间:2023-11-28 23:04:49 24 4
gpt4 key购买 nike

我正在使用 Python re尝试创建一个正则表达式来查找所有不以感叹号 (!) 开头的驼峰式单词。

这是我的:

(?<![!])([A-Z]?[a-z]+[A-Z][a-zA-Z]+)

负向后断言仅适用于第一个 [A-Z] block 而不是像我预期的那样括号内的所有内容。无论如何,是否可以应用负面回顾断言,以便它像我预期的那样对整个组起作用?

另外,如果那是不可能的。有人对我能做什么有什么建议吗?

我需要匹配(并最终替换)所有驼峰式单词。我定义 Camel Cased 的方式如下:

  1. 任何以单个大写字母或小写字母开头的单词
  2. 一个或多个小写字母
  3. 一个大写字母
  4. 一个或多个小写字母

换句话说,任何以仅一个大写字母开头,后跟一个或多个小写字母,再后跟一个大写字母,再后跟一个或多个小写字母的单词。

所有这些都很容易匹配,当我需要检查它是否以感叹号 (!) 开头时,问题就变得很明显了。目标是找到所有不以该符号开头的单词。

例子:

  • 正则表达式应匹配:HelloWorld
  • 正则表达式不应匹配:!HelloWorld

在这样的句子中:“欢迎来到 MyWorld!我们这里有 !CoolStuff!”我应该能够提取 MyWorld,但不能提取 CoolStuff

感谢您的帮助,-Sunjay03

[编辑:] 这是一个不起作用的字符串:

"This is an example of !HelloWorld. Click that link FOO! Also, check out my iPods"

正则表达式提取以下内容:

['elloWorld', 'iPods']

解决方案: (?<![!])\b([A-Z]?[a-z]+[A-Z][a-zA-Z]+)

感谢 JBernardo 的提示。此解决方案之所以有效,是因为它会查找不包括感叹号的任何单词边界。

最佳答案

re.findall(r'(?<![!])\b\w+', ' !Hai  Yo!')

结果是['Yo']

顺便说一句,只需更改 \w+ 并保留 \b

关于python - 我可以使正则表达式负后视断言应用于整个表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com