仅当数字周围没有引号时才使用正则表达式捕获数字
Use regex to capture numbers only if they don't have quotes around
我是一个正则表达式新手,处在一个对我来说很奇怪的情况中。我正在尝试匹配所有不在引号内的单位数字(特别是 1-9,我不需要零)。
例如,假设我有以下字符串:"1" or 1 ?
我需要匹配 1
但不是 "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
我是一个正则表达式新手,处在一个对我来说很奇怪的情况中。我正在尝试匹配所有不在引号内的单位数字(特别是 1-9,我不需要零)。
例如,假设我有以下字符串:"1" or 1 ?
我需要匹配 1
但不是 "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