Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 解析\(|.*)”等太多了)';s_Regex - Fatal编程技术网

Regex 解析\(|.*)”等太多了)';s

Regex 解析\(|.*)”等太多了)';s,regex,Regex,我在写这篇文章时收到了这个错误 parsing "\(|.*?)|)" - Too many )'s. 我想要这两件事的正则表达式1-{Text}2-|Text |我想要能够得到那些匹配项并用一些东西替换它们……有人能帮忙吗?你在逃避(而不是)你还没有说它是哪种风格的正则表达式,但是(和)的可能性很大是分组运算符。表达式的括号不匹配: private static Regex resourceTextsREGEX = new Regex(@"\(|.*?)|)", RegexOptions.

我在写这篇文章时收到了这个错误

parsing "\(|.*?)|)" - Too many )'s.

我想要这两件事的正则表达式1-{Text}2-|Text |我想要能够得到那些匹配项并用一些东西替换它们……有人能帮忙吗?

你在逃避
而不是
你还没有说它是哪种风格的正则表达式,但是
)的可能性很大
是分组运算符。表达式的括号不匹配:

 private static Regex resourceTextsREGEX = new Regex(@"\(|.*?)|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase); 
…如果您根本不想创建一个组,而只是想匹配parens。

试试这个

@"\(|.*?\)|\)" ^ ^ ^ +-----+--+--- escapes everywhere
这将匹配
{text}
{text}
{}
{text}
{text}

根据您的示例,您可能需要这样的匹配

 static Regex resourceTextsREGEX = new Regex(@"({)([^}{\|]+)(})|(\|)([^}{\|]+)(\|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase); 
看到了吗

所以您想要匹配
1.{Text}
2.|文本|

我的正则表达式一开始是匹配的

[{{124;]
要么是
{
要么是

然后是一个捕获组,它使用惰性匹配
(.*)


最后,结束字符被匹配
[|}]
意味着
}

如果我理解正确,您要求正则表达式匹配“{some text here}”和“| some text here |”

(\{.*.\}\\\\\\\\\\)
应该可以做到这一点;它匹配一对花括号内的任何内容(使用非贪婪量词)或一对垂直条内的任何内容(同样是非贪婪量词),并带有一对分组括号,以便您可以查看或替换匹配


当然,如果您不想匹配“{}”或“| |”,只需将每个星号(*)替换为加号(+).

您已经使用SO七个月了,并问了15个以前的问题。恕我直言,您现在应该已经正确设置了格式。请参阅问题编辑框右侧的“如何设置格式”便利框、下面的预览以及上面的[?]链接。这是什么语言?什么是“8小时26分钟前”在您的消息中?此模式还将匹配“{Text}”和“{Text}”。 @"\(|.*?\)|\)" ^ ^ ^ +-----+--+--- escapes everywhere
 static Regex resourceTextsREGEX = new Regex(@"({)([^}{\|]+)(})|(\|)([^}{\|]+)(\|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase); 
[{|](.*?)[|}]