不包括相同组合的Python正则表达式

2024-09-30 18:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我只想选择单词后跟数字或数字后跟单词ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2的字符串,除了last12Stmnt_052015_6043

使用Regex:\w?\d\w+|\w+\d+\w+=+|\w+\d+\w+,但它甚至选择了last12Stmnt_052015_6043。你知道吗

/ggg-web/ggg/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/statements/monthly/last12/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/save/Stmnt_052015_6043

需要regex模式来选择上述字符串中的以下字符串

ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2

非常感谢您的解决方案。你知道吗


Tags: 字符串websave模式数字解决方案单词regex
1条回答
网友
1楼 · 发布于 2024-09-30 18:33:43

我将给出两种可能适合您的解决方案,看看哪一种适合您的需要:

解决方案-1:

如果在目标(ggg&;last12)之前有这两个字符串,那么:

import re
p = re.compile(r'(?<=ggg/|last12/)(\w+)', re.DOTALL)
test_str = "/ggg-web/ggg/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/statements/monthly/last12/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/save/Stmnt_052015_6043"

re.findall(p, test_str)

DEMO HERE

解决方案2:

如果目标前面有不同的字符串,但目标字符串总是以ab开头,则更一般:

import re
p = re.compile(r'/(ab\w+)/', re.DOTALL)
test_str = "/ggg-web/ggg/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/statements/monthly/last12/ab8efc05ee6105461869578b9ff0ee0048f37413340ec3ca3c924590c60b8ff2/save/Stmnt_052015_6043"

re.findall(p, test_str)

DEMO HERE

相关问题 更多 >