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

时间:2020-04-15 17:55:26

标签: c# regex regex-group

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

正则表达式:

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

文字:

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

1 个答案:

答案 0 :(得分:1)

您尝试过的模式与空格不匹配,并且在圆括号后将停止匹配。

例如,您可以匹配不带括号的字符类中允许的字符,或者使用非捕获组和量词从开头匹配将关闭括号。

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

说明

  • Value - 字面上匹配
  • (捕获第1组
    • [\\\w:_.*-]+匹配列出的任何内容1次以上
    • (?:非捕获组
      • \([^()]*\)[\\\w:_.*-]*( .. )进行匹配,并且0倍以上列出的任何数字
    • )*关闭组并重复0次以上
  • )关闭第1组
  • \s匹配空白字符

Regex demo(单击“表格”标签以查看组值)

一种更广泛的模式是匹配到/的最后一次出现,然后匹配以下非空格字符

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

Regex demo

相关问题