仅当数字没有引号时才使用正则表达式捕获数字

时间:2016-12-01 22:02:19

标签: regex regex-negation

对于我来说,我是一个相当奇怪的正则新手。我试图匹配所有不在引号内的单位数字(特别是1-9,我不需要零)。

例如,假设我有以下字符串:"1" or 1 ?

我需要匹配1但不是"1"

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我将在Python中解释这一点:

import re
pattern = re.compile('(?<!"|\d)\d(?!"|\d)')
print(pattern.findall('1,"2",34,5'))
# ['1', '5']

此正则表达式的关键部分((?<!"|\d)\d(?!"|\d))是否定前瞻(?!)和否定后瞻(?<!)。它们都用于防止正则表达式引擎匹配固定长度的字符串。

可以在http://www.regular-expressions.info/lookaround.html

找到更多解释