python - 使用 Python 正则表达式中的排列捕获重复子模式

标签 python regex tokenize

我正在尝试标记一个由可以以任何顺序出现的子模式组成的字符串。 子模式是下划线、字母或数字。例如:

   'ABC_123_DEF_456' would provide ('ABC', '_', '123', '_', 'DEF', '_', '456')

这里是实现的正则表达式,给出了意想不到的结果:

>>> m = regex.match(r'^((_)|(\d+)|([[:alpha:]]+))+$', 'ABC_123_DEF_456')
>>> m.groups()
('456', '_', '456', 'DEF')

更新: - 排列:三个子模式可以以任何顺序出现,例如:

'ABC123__' would provide ('ABC', '123', '_', '_')

最佳答案

您可以使用 /([a-z]+|\d+|_)/i 将字符串分成数字、字母字符或单个下划线组:

>>> re.findall(r"([a-z]+|\d+|_)", "ABC_123_DEF_456", re.I)
['ABC', '_', '123', '_', 'DEF', '_', '456']
>>> re.findall(r"([a-z]+|\d+|_)", "ABC123__", re.I)
['ABC', '123', '_', '_']

关于python - 使用 Python 正则表达式中的排列捕获重复子模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59686622/

相关文章:

Python:为什么这个字符串无效?

regex - 正则表达式匹配用冒号连接的单词对

javascript - CoffeeScript 或 JavaScript 中的基本 NLP——Punkt 标记化,简单训练的贝叶斯模型——从哪里开始?

nlp - 添加 SpaCy Tokenizer 异常 : Do not split '>>'

Python:检索受 SQL DELETE 查询影响的行数

python pycrypto安装错误

python - 不同的 YAML 数组表示

Python 正则表达式 DUPLICATE_NAMES 标志

regex - 比较两个文件而不进行排序 AWK

java - 如何从 lucene 5.x.x 使用 StandardTokenizer