模式仅匹配括号中的特定字符

时间:2013-09-20 21:32:48

标签: c# regex

我需要在C#中使用正则表达式的一些建议。 我想要匹配的是2个字符(方括号)之间的所有内容,但只有当某些字符(,;)不在方括号之间时,我才想排除这些字符。

换句话说,我需要在一个正则表达式中组合两个表达式。 我有这个:[(。*?)] 而另一个:[^,;]

这两个表达式在隔离时效果很好,但我需要两者的结合 我还没有把它们组合在一个单独的表达式中,如果我可以做这样的事情会很好[(。*?)] & [^,;]但它不起作用

这里有一些关于我需要的实际例子:

  • ... [text1] ...:匹配:[text1]

  • ... [text text2] ...:匹配:[text text2]

  • ... [text,text2] ...:不匹配!

  • ... [text; text2] ...:不匹配!

请您提出任何建议都非常有用。

非常感谢

3 个答案:

答案 0 :(得分:1)

你试过@"\[([^,;]+?)\]"吗?

regexpal.com

上查看

答案 1 :(得分:0)

尝试@“\ [[^,;] * \]”

另外,试试http://regexpal.com/

答案 2 :(得分:0)

使用替换:这是一个示例

    $test = preg_replace('/\[.*?\]|[\[\]=]/', '', $test);

这里的排序很重要,因此首先匹配括号及其内容将被删除。只要没有嵌套括号,这应该可以正常工作。