何时使用正则表达式中的组?

时间:2017-12-31 23:53:28

标签: python regex python-3.x

我是一个新手并且更多地了解正则表达式。我还不清楚为什么我们使用群组。我在下面的正则表达式中使用它们:

This is http://www.google.com, this is http://www.yahoo.com.

这将提取网址,如下面的句子所示:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference at dartdev.intent.MainActivity$3.onClick(MainActivity.java:122)

我确实使用了团体,但我不确定为什么。我在网上看到了这个解释,但对其含义感到困惑:

通过将正则表达式的一部分放在圆括号或括号内,您可以将正则表达式的该部分组合在一起。这允许您将量词应用于整个组或限制交替使用正则表达式的一部分。

因此,任何简化的小组澄清都会很棒。

1 个答案:

答案 0 :(得分:-1)

当我使用组时,通常是因为我需要替换一些特定的正则表达式模式,但不是全部。

例如,假设您有一个大型文本文件,并且您希望将所有以.com结尾的主机名更改为.biz

显然,你不能盲目地用.com替换.biz,因为该文本可能出现在某个不是主机名的地方。因此,您需要一种方法来识别看起来像主机名的文本片段。

我不会在这里讨论完整的主机名规则,但是为了这个例子的目的,我们假设主机名是由句点分隔的两到四个字母字符序列,例如ibm.com或{{1} }。

用于标识以www.santa.northpole.org结尾的主机名的正则表达式可能如下所示:

.com

这意味着“一个或多个字母后跟一段时间,发生一到三次,然后是([a-z]+\.){1,3}com 。”

表达式的第一部分在括号内,这意味着它可以与其余部分分开处理。所以你可以有这样的替换模式:

com

含义“保持第一组表达不变,并将\1.biz 放在最后。”