我有這個"^[-A-Z0-9-[O]]{1,8}$"
來自客戶要求的正則運算式()(通常不應更改)。但它在 python 中不起作用(它在 C 中起作用)。
from re import search
var = "MY01C0DE"
regex = "^[-A-Z0-9-[O]]{1,8}$"
print(search(regex, var))
這列印無。
但是,如果我將正則運算式更改為"^[-A-NP-Z0-9]{1,8}$"
,則有效。
from re import search
var = "MY01C0DE"
regex = "^[-A-NP-Z0-9]{1,8}$"
print(search(regex, var))
因此,如果我理解正確,基本上該-[O]
部分在 python 中不起作用。但是我已經檢查過了,這個正則運算式在 C 中作業。有沒有辦法讓這種排除字符(-[O]
)的方式也能在 python 中作業?
uj5u.com熱心網友回復:
您可以使用regex
支持類似.NET 的字符類減法和使用的 PyPi 模塊
from regex import search, V1
var = "MY01C0DE"
regex = "^[-A-Z0-9-[O]]{1,8}$"
print(search(regex, var, V1))
# => <regex.Match object; span=(0, 8), match='MY01C0DE'>
請參閱Python 演示。
檢查“嵌套集和集操作”部分:
例如,模式
[[a-z]--[aeiou]]
在版本 0 行為(簡單集合,與 re 模塊兼容)中被視為:
- 包含“[”和字母“a”到“z”的集合
- 字面“-”
- 包含字母“a”、“e”、“i”、“o”、“u”的集合
- 文字“]”
但在版本 1 中的行為(嵌套集、增強行為)為:
- 設定為:
- 包含字母“a”到“z”的集合
- 但不包括:
- 包含字母“a”、“e”、“i”、“o”、“u”的集合
版本 0 行為:僅支持簡單集合。
版本 1 行為:支持嵌套集合和集合操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519979.html
標籤:Python正则表达式
上一篇:正則運算式查找不同字符之間的文本