python - python 中的正则表达式 - 找不到特定的字符串

标签 python regex

我开始在 python 中学习正则表达式,我有以下任务:

我需要编写一个包含这两个字符串的脚本:

string_1 = 'merchant ID 1234, device ID 45678, serial# 123456789'

string_2 = 'merchant ID 8765, user ID 531476, serial# 87654321'

并且只显示包含merchant ID ####device ID ####的字符串。

为了检查第一个条件,我写了以下行:

ex_1 = re.findall(r'\merchant\b\s\ID\b\s\d+', string_1)
print (ex_1)

output: ['merchant ID 1234'] - works fine!

问题是由于某种原因我无法获得其他条件:

ex_2 = re.findall(r'\device\b\s\ID\b\s\d+', string_1)

output: [] - empty list.

我做错了什么?

最佳答案

因为:

ex_2 = re.findall(r'\device\b\s\ID\b\s\d+', string_1)
                    ^^

它匹配一个数字,但是 \merchant 中的 \m 仍然是 m。但是,您应该删除 \ID\device 之前的 \,例如:

>>> re.findall(r'device\b\sID\b\s\d+', string_1)
['device ID 45678']

关于python - python 中的正则表达式 - 找不到特定的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394782/

相关文章:

java - 用 Java 编写脚本

javascript - 在 JavaScript 正则表达式中使用前瞻匹配可选组

php - 如何删除前导和尾随非字母数字字符

python - 从输出 txt matplotlib 制作电影

python - pandas vlookup 两列并查找值

python - np.沿轴减去

python - 如何使用 Django 创建特定的 if 条件模板标签?

php - preg_replace 检测语言标签和删除其他语言数据所需的支持

c# - 解析十六进制内容的文本文件

java - 在自定义标签之间查找是否有文本