如何使用正则表达式捕获一个或多个字符串的内容?

时间:2009-06-29 23:14:45

标签: .net regex

假设我有以下三个字符串:

(section1){stuff可能是任何角色,我想全部抓住}

(section1)(section2){stuff可以是任何角色,我想全部抓住}

(section1)(section2)(section3){stuff可能是任何角色,我想全部抓住}

因此,如果将regex应用于我的表达式,那么我会得到第一个:

SECTION1

东西可以是任何角色,我想抓住它们

如果将regex应用于我的表达式,那么我会得到第二个:

SECTION1

第2节

东西可以是任何角色,我想抓住它们

如果将regex应用于我的表达式,那么我会得到第三个:

SECTION1

第2节

SECTION3

东西可以是任何角色,我想抓住它们

我有以下正则表达式:

((小于?节>。+))+ {<术语GT; +}

所以寻找内部的parens并重复然后在花括号内的内容。 它似乎不起作用 任何线索?这一直是我的Achille的脚跟。

3 个答案:

答案 0 :(得分:2)

(?<section>\(.+?\))+?(?<term>\{.+\})

可能更接近你正在寻找的东西。

这将匹配您拥有的许多( N )段以及{term}

答案 1 :(得分:0)

我不太明白你想要什么,但无论如何我都会试着回答

(\(section1\)(\(section2\)(\(section3\))?)?)(.*)

那将匹配(和捕获)(section1),然后是其他东西(或什么都没有),并且可选地后面跟着一个(section2),然后可以选择性地跟随(section3)

我几乎可以肯定这不是你需要的,但至少会提示你更好地描述你的问题: - )

答案 2 :(得分:0)

在编写正则表达式时要记住一件事,出现括号{}包含数字,而不是外卡。

 <regex>{3}  //will match three exactly
 <regex>{0,3} // will match up to and including three
 <regex>{3,} // will match three or more

在尝试编写模式时,使用实用程序来测试字符串也很不错。这是one such online tool