现有一段文本,里面可能包含一个数字(位数不知,位置不知),现在的需求是只当是 6 位数字的情况下才匹配。
文本内容可能情况有: 12345678abc(错误), abc123(错误), 123456abc(正确)。
请问该怎么写模型啊?
文本内容可能情况有: 12345678abc(错误), abc123(错误), 123456abc(正确)。
请问该怎么写模型啊?
|
ywpgJan 4, 2017
1
如果是连续数字,请查阅文档。
如果数字可以不连续,建议不用正则处理。 |
|
enclaveJan 4, 2017 via iPhone
2
\d{6}
|
|
enclaveJan 4, 2017 via iPhone
3
.*\d{6}.*
|
|
ipwxJan 4, 2017
4
(?<=[^\d]|^)\d{6}(?=[^\d]|$)
|
|
imn1Jan 4, 2017
5
估计是空格分开吧
\S*\d{6}\S* |
|
LigeLaigeJan 4, 2017
6
\D+\d{6}\D+
|
|
trcnkqJan 4, 2017
7
\D*\d{6}\D*
|
|
9
@ipwx 谢谢,我后来用了(\D|^)(\d{6})(\D|$),用起来没问题。
继续请教下:[\D^] 和 (\D|^) 有什么区别吗?我测试时,用前者,最文本最前面是数字就不能匹配,而用后者就没有限制。 |
|
DiamondbacKJan 5, 2017
10
@cfczdws
读一读正则表达式文档中的 '[]' 表达式部分,了解一下 '[]' 里的 '^' 的含义。 |
|
LigeLaigeJan 5, 2017
11
@cfczdws
import re pattern = re.compile(r'\D+\d{6}\D+') result = pattern.findall('abc12345678def') # result is [] 不知道你是否仔细看了大家的答案! 如果你需要提取这个数字,则可以写成 r'\D+(\d{6})\D+' 它会保持在正则引擎的内建变量 \1 中 |
|
ipwxJan 5, 2017
12
|
|
13
|