gpt4 book ai didi

python - 正则表达式查找 '\n'

转载 作者:太空狗 更新时间:2023-10-30 02:56:16 25 4
gpt4 key购买 nike

我正在制作一个程序来对文本中的电话号码进行模式匹配。

我正在加载这段文字:

(01111-222222)fdf
01111222222
(01111)222222
01111 222222
01111.222222

进入一个变量,并使用“findall”返回这个:

('(01111-222222)', '(01111', '-', '222222)')
('\n011112', '', '\n', '011112')
('(01111)222222', '(01111)', '', '222222')
('01111 222222', '01111', ' ', '222222')
('01111.222222', '01111', '.', '222222')

这是我的表情:

ex = re.compile(r"""(
(\(?0\d{4}\)?)? # Area code
(\s*\-*\.*)? # seperator
(\(?\d{6}\)?) # Local number
)""", re.VERBOSE)

我不明白为什么 '\n' 会被捕获。

如果 '\\.*' 中的 * 被替换为 '+',表达式将按我想要的方式工作。或者,如果我简单地删除 *(并乐于找到仅由一个句点分隔的两组数字),则该表达式有效。

最佳答案

\s 匹配水平垂直 空白符号。如果您有 re.VERBOSE,则可以将普通空格与转义空格 \ 匹配。或者,您可以使用 [^\S\r\n]\s 中排除 \r\n > 以匹配水平空格。

使用

ex = re.compile(r"""(
(\(?0\d{4}\)?)? # Area code
([^\S\r\n]*-*\.*)? # seperator ((HERE))
(\(?\d{6}\)?) # Local number
)""", re.VERBOSE)

参见 regex demo

此外,字符类之外的-不需要转义。

关于python - 正则表达式查找 '\n',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40016950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com