【问题标题】:RegEx modification for values between parenthesis [duplicate]括号之间的值的正则表达式修改[重复]
【发布时间】:2013-07-15 13:54:50
【问题描述】:

我在工作中使用正则表达式,它返回括号之间的值。

例如:Some text (123) -> 123

使用以下正则表达式:/(?<=\().*(?=\))/ 但我有一个看起来像这样的条目,因此返回这个:

Some (text) (123) -> text ) (123

我试图捕捉的值总是在字符串的末尾,在最后一个括号中。谁能解释我在我的 RegEx 中要改变什么来获得这个值?

【问题讨论】:

  • 怎么样:/\(\d+)\)$/
  • 不确定在本例中是要捕获第一个“123”还是第二个?
  • @beiller: "我试图捕捉的值总是在字符串的末尾"
  • 在这两个示例中,我需要捕获的值都是“123”,但它不适用于使用我的正则表达式的第二个示例。
  • @fliespl 那句话的第二部分“在最后一个括号中”是什么意思?

标签: php regex


【解决方案1】:

如果值总是在末尾,只需锚定表达式并简化它:

/\((\d+)\)$/

要匹配内部的任何字符,您可以使用否定字符集:

/\(([^)]+)\)$/

[^)]+ 匹配任何不是右括号的内容。

【讨论】:

  • 它就像一个魅力,非常感谢!你太快了,我只能设置我的问题在 10 分钟内解决 =)
猜你喜欢
  • 2013-05-04
  • 2018-09-26
  • 2019-01-20
  • 1970-01-01
  • 2012-04-28
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
相关资源
最近更新 更多