出现特定数字和单词时的正则表达式匹配
Regular expression match when specific digits AND words appear
我对正则表达式很陌生,正在处理我希望同时满足两个条件的字符串验证。我正在匹配包含以 4 或 7 开头的 7 位数字的文本 + 字符串需要包含提供的单词之一。
到目前为止我管理的内容:
\b((4|7)\d{6})\b|(\border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)
上面的正则表达式正确地找到了数字,但是单词在 OR 语句之后,我需要遵循 AND 逻辑。
你能帮我实现一个可以作为数字和单词之间的 AND 语句的更改吗?
默认情况下,正则表达式中的所有内容都是 AND
如果你这样做
美国广播公司,
它的意思是“a”和“b”和“c”
所以在 regex
中不需要 AND
只需删除 |在数字匹配和单词之间
\b(4|7)\d{6}(border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b
我假设第一个单词 \border 的反斜杠是一个错误。
这可以匹配如下内容:“4958374border”
您可以使用
(?s)^(?=.*\b(?:order|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b).*\b([47]\d{6})\b
如果您可以并且希望使用不区分大小写的匹配 re.I
,您可以使用
(?si)^(?=.*\b(?:order|bestellung|commande|ordine|objednavk[ua])\b).*\b([47]\d{6})\b
参见regex demo。
这匹配
^
- 字符串开头
(?=.*\b(?:order|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b)
- 匹配任何零个或多个字符的积极前瞻,尽可能多,直到组中列出的任何完整单词
.*
- 零个或多个字符,尽可能多
\b([47]\d{6})\b
- 以 4
或 7
. 开头的 7 位数字作为一个完整的单词
不要忘记使用原始字符串文字在 Python 代码中定义正则表达式:
pattern = r'(?si)^(?=.*\b(?:order|bestellung|commande|ordine|objednavk[ua])\b).*\b([47]\d{6})\b'
我对正则表达式很陌生,正在处理我希望同时满足两个条件的字符串验证。我正在匹配包含以 4 或 7 开头的 7 位数字的文本 + 字符串需要包含提供的单词之一。
到目前为止我管理的内容:
\b((4|7)\d{6})\b|(\border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)
上面的正则表达式正确地找到了数字,但是单词在 OR 语句之后,我需要遵循 AND 逻辑。
你能帮我实现一个可以作为数字和单词之间的 AND 语句的更改吗?
默认情况下,正则表达式中的所有内容都是 AND 如果你这样做 美国广播公司, 它的意思是“a”和“b”和“c” 所以在 regex
中不需要 AND只需删除 |在数字匹配和单词之间
\b(4|7)\d{6}(border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b
我假设第一个单词 \border 的反斜杠是一个错误。 这可以匹配如下内容:“4958374border”
您可以使用
(?s)^(?=.*\b(?:order|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b).*\b([47]\d{6})\b
如果您可以并且希望使用不区分大小写的匹配 re.I
,您可以使用
(?si)^(?=.*\b(?:order|bestellung|commande|ordine|objednavk[ua])\b).*\b([47]\d{6})\b
参见regex demo。
这匹配
^
- 字符串开头(?=.*\b(?:order|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b)
- 匹配任何零个或多个字符的积极前瞻,尽可能多,直到组中列出的任何完整单词.*
- 零个或多个字符,尽可能多\b([47]\d{6})\b
- 以4
或7
. 开头的 7 位数字作为一个完整的单词
不要忘记使用原始字符串文字在 Python 代码中定义正则表达式:
pattern = r'(?si)^(?=.*\b(?:order|bestellung|commande|ordine|objednavk[ua])\b).*\b([47]\d{6})\b'