正则表达式边界

时间:2012-07-28 23:56:47

标签: c# .net regex

请帮我找到匹配:

    <ptext>Any Sentence/tags goes here</ptext> 

我现在的正则表达式是:

    \<ptext\>\b.+\b\</ptext\>

但是,如果我将加倍例如:

<ptext>Any Sentence/tags goes here</ptext> <ptext>Any Sentence/tags goes here</ptext> 

我的正则表达式将匹配ptext到最后一个ptext

我如何将其分开,以便在我给出的示例中匹配两(2)个匹配。感谢你的帮助。

2 个答案:

答案 0 :(得分:4)

这是一对( ).+?派上用场的地方。尝试...

\<ptext\>\b(.+?)\b\</ptext\>

这有两件事。首先,它们自己使用的括号,不要与OR语句(like|this)混淆,将在括号内具体返回,而不是一切。其次,“懒惰”.+?将匹配1个或多个字符,直到第一个匹配,而不是最后一个匹配,这是有效的。这样,它应该只捕获每组项目,而不是整个文件。

也不确定\b是否适合你的情况,仅供参考。因此,我建议......

\<ptext\>(.+?)\</ptext\>

例如,此代码应返回...

Array[0] = "This is a sentence"
Array[1] = "Here's another one."

答案 1 :(得分:2)

使用非贪婪的量词:

<ptext>.+?</ptext>