【问题标题】:Regex to get content in the last occurrence of brackets in the most outer level正则表达式获取最外层括号中最后一次出现的内容
【发布时间】:2016-11-06 07:45:58
【问题描述】:

我有一个字符串: 示例(123)(示例(123)

我正在尝试以粗体显示字符串。目前我有这个正则表达式: (?

正则表达式大部分时间都在获取括号中的文本,但当嵌套括号不止一次出现时则不行。

请告知我该如何解决这个问题。

谢谢!

【问题讨论】:

  • 我需要一个正则表达式,它将以粗体显示值:Hello World (Hello World (123)) Hello World (Hello World)
  • 这不是用正则表达式来完成的,而是应该用简单的编程逻辑来完成......

标签: .net regex


【解决方案1】:

您需要一个递归正则表达式来进行正确匹配。这个可行:

\(\w+\s*(?R)*[^()]*\)

regex101 test

问题:

  • 只需 1 个模式匹配,您将始终获得外括号。
  • 它没有锚定到字符串的末尾。我只是不知道如何实现它。所以你需要抓住最后一场比赛。

【讨论】:

    【解决方案2】:

    试试这个:

    \([a-zA-Z\s]+\s\([0-9]+\)
    

    更新代码:

    \([\w\s]*\(*[\w\s]*[()]*[\w\s]*\)\)
    

    测试here

    【讨论】:

    • 这适用于上面的示例,但不适用于所有情况。我想要一个正则表达式,它返回最后一组外括号中的值,例如,如果我有“any_string_abc (anything) (any_string (whatever)(whatever123))”,我想得到“any_string (whatever)(whatever123)”
    【解决方案3】:

    尝试以下解决方案来查找括号“)”的最后一次出现:

    \)($)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2012-01-12
      • 2021-10-15
      • 2021-01-02
      • 2016-08-22
      相关资源
      最近更新 更多