Php 正则表达式中括号的用途

Php 正则表达式中括号的用途,php,regex,Php,Regex,我不理解regexp中的() 这些行之间的区别是什么: "/hello/" "/(hello)/" 通过将它包装在(和)中,您可以捕获它并将其作为一个整体进行处理。假设我们有以下文本: 你好你好 如果我想在两个字母中找到“hello”一词,我可以这样做: /hellohello/ /(hello){2}/ 或者,我可以这样做: /hellohello/ /(hello){2}/ ()提供一种捕获匹配项和分组的方法,查看更完整的描述。正如您所写的,这两个示例之间没有实际区别。但是para

我不理解regexp中的()

这些行之间的区别是什么:

"/hello/"
"/(hello)/"
通过将它包装在(和)中,您可以捕获它并将其作为一个整体进行处理。假设我们有以下文本:

你好你好

如果我想在两个字母中找到“hello”一词,我可以这样做:

/hellohello/
/(hello){2}/
或者,我可以这样做:

/hellohello/
/(hello){2}/

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

正如您所写的,这两个示例之间没有实际区别。但是paranthesis允许您对这整组字符应用post逻辑(例如,作为另一个示例使用的海报,{2}之后会声明字符串“hello”连续键入两次,中间没有任何字符-hellohello。paranthesis还允许您使用“或”语句-“/(hello |再见)/”将匹配“你好”或“再见”

然而,它们最强大的用途是从字符串中提取数据,而不仅仅是匹配它,它允许您从字符串中提取数据并使用它做您想做的事情

e、 在PHP中,如果您这样做了

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

然后,$holder[1]将包含“hello”之后的所有文本,在本例中是“你好吗?”

因此上面的示例将给出相同的结果?对于两次查找“hello”,是的。如果需要,您可以手动输入两次,但可以想象类似于
/(hello){50}/
。这是一个非常有限的演示。很好的例子..给了你一个绿色的:)你能用下面的代码解释一下这两个()吗,我听不懂:'/]+)\>(.*?\/i'这是一个反向引用。通常,它们用于存储表达式的某些部分以供以后使用。关于反向引用的示例,您可以看到以下问题: