gpt4 book ai didi

python - 正则表达式菜鸟问题

转载 作者:行者123 更新时间:2023-11-30 23:11:04 25 4
gpt4 key购买 nike

所以这是我的字符串:

"""$10. 2109 W. Chicago Ave., 773-772-0406, <a href="http://www.theoldoaktap.com/">theoldoaktap.com</a>"""

我知道这是正确的正则表达式公式,可以给我我想要的东西(输出如下):

age = re.match(r'\$([\d.]+)\. (.+), ([\d-]+)', example)
print age.groups()

output ====> ('10', '2109 W. Chicago Ave.', '773-772-0406')

但即使在阅读文档后我对正则表达式公式仍有一些疑问:

  1. 当与 () 括号分组时,这些是正则表达式最终返回的单独元组值,对吗?
  2. 如果我删除 $ 符号,为什么整个事情会完全崩溃并出现错误:不平衡的括号?无论我是否事先指定了 $,正则表达式是否都应该能够获取 $ 之后的价格?在此基础上,如果我希望输出为 $10,而不是 10,为什么我不能将 $ 移到里面并简单地运行 r'\($[\d.]+)?它给我带来了另一个不平衡的括号错误。
  3. 在中间的(.+),之后,逗号是Python知道我们已经完成将值插入到第二个元组值槽中的唯一方式吗?那么,(.+) 并不真正意味着“任何字符”,不是吗?如果逗号后面紧跟着一个数字,逗号会将其移动到下一个字符,对吗?
  4. 有人可以解释一下 + 号在括号内而不是在括号外的位置吗?这有何不同?

很抱歉提出了一些非常菜鸟的问题。总有一天会好起来的。提前致谢。

最佳答案

When grouped with the ()parenthesis, those are the separate tuple values the regex is ultimately returning, right?

正确

If I delete the $ sign, why does the whole thing completely break down with error:unbalanced parenthesis? shouldn't the regular expression be able to grab the price after the $ regardless of if I specified $ beforehand?

如果删除美元符号,则转义字符 \ 会转义左括号字符 (,告诉正则表达式引擎不要将其视为它需要的文字字符在您的字符串中搜索。

after the (.+), in the middle, is the comma the only way python knows we are done with the value to be slotted into the second tuple value slot?

是的,它告诉 Python 捕获 1 个或多个几乎所有字符,直到最后一个逗号。 . 几乎匹配任何单个字符。 .+ 匹配 1 个或多个几乎任何字符。

请注意,.+ 是贪婪的,这意味着它将继续捕获逗号,直到最后一个逗号之前。如果您希望它在第一个逗号之前停止,您可以使用 .+?

使其变得懒惰

could someone explain the placement of the + signs inside the parenthesis rather than outside and how that makes a difference?

它不会改变 + 的行为,无论是在内部还是外部。它只是改变捕获到组中的内容。

编辑:

Why can't i move the $ inside and simply run r'($[\d.]+)? it throws me another unbalanced parenthesis error.

这是因为 $ 也有特殊的含义(意味着匹配行尾),就像正则表达式中的 () 一样,这意味着您需要转义它,您想要匹配文字字符,就像您转义括号一样: \$.

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

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