正则表达式中括号的用途

时间:2010-02-20 05:55:05

标签: php regex

我不理解正则表达式中的()。

例如。这些行之间有什么区别:

"/hello/"
"/(hello)/"

3 个答案:

答案 0 :(得分:6)

()提供了一种捕获匹配和分组的方法,可以查看here以获得更完整的描述。

答案 1 :(得分:1)

通过将其包裹在(和)中,您可以捕获它并作为一个整体处理它。假设我们有以下文字:

  

hellohello你好!

如果我想在两个中找到“你好”这个词,我可以这样做:

/hellohello/

或者,我可以这样做:

/(hello){2}/

答案 2 :(得分:1)

正如您所写,两个例子之间没有实际区别。但是,parantheses允许你将后逻辑应用于整个字符组(例如,作为另一个海报用作示例,{2}之后将声明字符串“hello”连续两次输入 - 两者之间没有任何东西 - hellohello 。Parantheses也允许你使用“或”语句 - “/(hello | goodbye)/”将匹配EITHER你好或再见。

然而,它们最强大的用途是从字符串中提取数据,而不仅仅是匹配它,它可以让你从字符串中提取数据并用它做你想做的事。

e.g。在PHP中如果你做了

preg_replace( "/hello (.+)/i", "hello how are you?", $holder );`

然后$ holder [1]将包含“hello”之后的所有文本,在这种情况下将是“你好吗?”