我是一个新手并且更多地了解正则表达式。我还不清楚为什么我们使用群组。我在下面的正则表达式中使用它们:
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)
我确实使用了团体,但我不确定为什么。我在网上看到了这个解释,但对其含义感到困惑:
通过将正则表达式的一部分放在圆括号或括号内,您可以将正则表达式的该部分组合在一起。这允许您将量词应用于整个组或限制交替使用正则表达式的一部分。
因此,任何简化的小组澄清都会很棒。
答案 0 :(得分:-1)
当我使用组时,通常是因为我需要替换一些特定的正则表达式模式,但不是全部。
例如,假设您有一个大型文本文件,并且您希望将所有以.com
结尾的主机名更改为.biz
。
显然,你不能盲目地用.com
替换.biz
,因为该文本可能出现在某个不是主机名的地方。因此,您需要一种方法来识别看起来像主机名的文本片段。
我不会在这里讨论完整的主机名规则,但是为了这个例子的目的,我们假设主机名是由句点分隔的两到四个字母字符序列,例如ibm.com
或{{1} }。
用于标识以www.santa.northpole.org
结尾的主机名的正则表达式可能如下所示:
.com
这意味着“一个或多个字母后跟一段时间,发生一到三次,然后是([a-z]+\.){1,3}com
。”
表达式的第一部分在括号内,这意味着它可以与其余部分分开处理。所以你可以有这样的替换模式:
com
含义“保持第一组表达不变,并将\1.biz
放在最后。”