使用正则表达式捕获包含“(”和“)”的字符串

Capture a string which contains '(' and ')' using regular expression

我想使用下面的表达式在组捕获中捕获出现在 'Value - ' 到 'TestRun' 之后的整个字符串,但它不考虑文字 ')'。如何捕获字符串直到 'TestRun'?

正则表达式:

Value - ([\\w-:_.*\(\)]+)\s

正文:

Value - F:\TEMP\Radio\M\Try_Remove( alt )\TestRun End

您尝试的模式与 space 不匹配,将在左括号后停止匹配。

例如,您可以在不带括号的情况下匹配字符 class 中允许的内容,或者使用非捕获组和量词匹配左括号和右括号。

Value - ([\\w:_.*-]+(?:\([^()]*\)[\\w:_.*-]*)*)\s

说明

  • Value - 字面匹配
  • ( 捕获 组 1
    • [\\w:_.*-]+ 匹配任何列出的 1 次以上
    • (?:非捕获组
      • \([^()]*\)[\\w:_.*-]* 匹配 (..) 和 0+ 次任何列出的
    • )*关闭组重复0+次
  • ) 关闭组 1
  • \s 匹配白色space 字符

Regex demo(单击 Table 选项卡查看组值)

更广泛的模式是匹配直到最后一次出现 /,然后匹配后面的非 whitespace 个字符

Value - (.*\\S+)\s

Regex demo