python - 正则表达式获取字母数字字符串之间的非字母数字字符串
问题描述
假设我有这个字符串:
Alpha+*&Numeric%$^String%%$
我想获取字母数字字符之间的非字母数字字符:
+*& %$^
我有这个正则表达式:[^0-9a-zA-Z]+
但它给了我
+* %$^ %%$
其中包括我不想要的尾随非字母数字字符。我也试过[0-9a-zA-Z]([^0-9a-zA-Z])+[0-9a-zA-Z]
,但它给了我
a+*&N c%$^S
其中包括字符a
,N
和c
S
解决方案
如果您不介意将_
字符包含为字母数字数据,则可以使用以下方法提取所有非字母数字数据:
some_string = "A+*&N%$^S%%$"
import re
result = re.findall(r'\b\W+\b', some_string) # sets result to: ['+*&', '%$^']
请注意我使用 of而不是or\b
之类的东西。\w
[^\W]
\w
并且[^\W]
每个匹配一个字符,因此如果您的字母数字字符串(在您想要的文本之间)恰好是一个字符,那么您认为应该是下一个匹配的内容将不匹配。
但既然\b
是一个零宽度的“字边界”,它并不关心有多少个字母数字字符,只要至少有一个。
推荐阅读
- azure-functions - Azure 函数的 CosmosDB 触发器
- react-native - react-native-view-shot:NativeModules.RNViewShot 未定义。确保库在本机端链接
- c++ - 使用 `std::accumulate` 和 constexpr
- azure - 需要创建 ARM 模板以在 Azure 应用服务中启用自动修复,并根据 HTTP 状态代码范围 (400-530) 自定义自动修复
- python - 如何在python中调用多个基类__init__
- php - ajax 中的 PHP url 调用未执行 - 未触发成功
- r - 使用 R (rvest) 抓取 PHP 仪表板
- neural-network - 如何提高 CNN 的性能并减少过拟合?
- mysql - MySQL获取列之间差异最大的行(不重复)
- cmake - 可以包含一个 cmake 工具链文件而不是将其作为命令行参数传递吗?