我试图理解为什么以下剂量不起作用。
\b(?:CNC\W+(?:\w+\W+){1,6}[\d])\b
每个部分都将在那里独立工作,我可以找到关键短语,或者我可以找到数字,并且 6 个单词内的匹配项在同一系统中的其他正则表达式中有效。
在来这里之前,我一直在使用 RegexBuddy 构建代码并检查各种网站。
我只是不明白为什么这不起作用。我仅限于在此环境中使用基于 python 的正则表达式。
我很想得到一个可以解决它的答案,但我真的很想知道我哪里出错了
问候
我试图理解为什么以下剂量不起作用。
\b(?:CNC\W+(?:\w+\W+){1,6}[\d])\b
每个部分都将在那里独立工作,我可以找到关键短语,或者我可以找到数字,并且 6 个单词内的匹配项在同一系统中的其他正则表达式中有效。
在来这里之前,我一直在使用 RegexBuddy 构建代码并检查各种网站。
我只是不明白为什么这不起作用。我仅限于在此环境中使用基于 python 的正则表达式。
我很想得到一个可以解决它的答案,但我真的很想知道我哪里出错了
问候
您可以使用
(\d+)\W+(?:\w+\W+){0,5}CNC\b|\bCNC\W+(?:\w+\W+){0,5}(\d+)
正则表达式演示可在此处获得。您的期望值在第 1 组和第 2 组中。
细节
(\d+)
- 捕获组 1:一位或多位数字\W+
- 1+ 非单词字符(?:\w+\W+){0,5}
- 0 到 5 次重复 1+ 单词字符和 1+ 非单词字符CNC\b
- 一个完整的词CNC
|
- 或者\bCNC
- 全词CNC\W+
- 1+ 非单词字符(?:\w+\W+){0,5}
- 0 到 5 次重复 1+ 单词字符和 1+ 非单词字符(\d+)
- 捕获组 2:一位或多位数字在Python中:
import re
s = '''the number of CNC machines equalled 5 I want to match "CNC operators numbering 12" and the reverse like "There are 12 qualified CNC operators on site'''
rx = r'(\d+)\W+(?:\w+\W+){0,5}CNC\b|\bCNC\W+(?:\w+\W+){0,5}(\d+)'
print(["{}{}".format(x,y) for x,y in re.findall(rx, s)])
# => ['5', '12', '12']