parsing "\(|.*?)|)" - Too many )'s.
写这篇文章时我收到了这个错误...
private static Regex resourceTextsREGEX = new Regex(@"\(|.*?)|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
我想要这两件事的正则表达式1- {Text} 2- | Text |我希望能够获得这些比赛并用一些东西取而代之......有人可以帮忙吗?
答案 0 :(得分:6)
你还没有说过它是什么样的正则表达式,但(
和)
是分组运算符的几率非常高。您的表达式与括号不匹配:
@"\(|.*?)|)"
你可能意味着
@"(|.*?\)|)" ^ ^-- escape +-- no escape
...如果您正在尝试创建可能包含实际)
的群组,或
@"\(|.*?\)|\)" ^ ^ ^ +-----+--+--- escapes everywhere
...如果你根本没有尝试创建一个组,只是试图匹配parens。
答案 1 :(得分:2)
您正在逃避(
而不是)
答案 2 :(得分:1)
根据你的例子你想要匹配的东西你可能需要这样的东西
[{|](.*?)[|}]
所以你想匹配
1. {文字}
2. |文字|
我的正则表达式首先匹配
[{|]
{
或|
然后是一个捕获组,使用惰性匹配(.*?)
最后,结束字符与[|}]
匹配,表示}
或|
答案 3 :(得分:0)
试试这个
static Regex resourceTextsREGEX = new Regex(@"({)([^}{\|]+)(})|(\|)([^}{\|]+)(\|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
这会将{text}
,|text|
和不与{}
,||
,{text|
答案 4 :(得分:0)
如果我理解正确,你要求正则表达式匹配“{some text here}”和“| some text here |”。
(\{.*?\}|\|.*?\|)
应该这样做;它匹配一对花括号内的任何东西(带有非贪婪的量词)或一对垂直条内的任何东西(同样是非贪婪的量词),带有一对分组括号,以便您可以查看或替换匹配。
当然,如果您不想匹配“{}”或“||”你可以简单地用加号(+)替换每个星号(*)。