c# - 正则表达式公式 - 无法识别公式

标签 c# regex

我正在尝试编写模式来识别公式 IF 形式字符串。

例如字符串

[@param_6@]  @IF(@param_5@==null;@param_5@;@IF(1==1;@param_2@;@param_4@)@)@ - @param_3@ - <@IF(@parameter_tag2@ == null;@param_4@;@param_5@)@>

我想获得这个结果

1. Match: @IF(@param_5@==null;@param_5@;@IF(1==1;@param_2@;@param_4@)@)@
2. Match: @IF(@parameter_tag2@ == null;@param_4@;@param_5@)@

我的模式看起来像:

@IF\(.*\;.*\;.*\)@

但是正则表达式返回了错误的结果。

最佳答案

你可以使用

(?s)@IF\((?>(?!@IF\(|\)@).|(?<o>)@IF\(|(?<-o>)\)@)*\)@

请参阅regex demo详细信息:

  • (?s) -RegexOptions.Singleline等效,.现在也匹配 LF 字符
  • @IF\( - 一个@IF(字符串
  • (?>(?!@IF\(|\)@).|(?<o>)@IF\(|(?<-o>)\)@)* - 零次或多次重复
    • (?!@IF\(|\)@).| - 任何不以 @IF( 开头的字符或)@字符序列
    • (?<o>)@IF\(| - 一个@IF(子字符串和值被推送到“o”组堆栈,或者
    • (?<-o>)\)@ - 一个)@字符串和一个值从“o”组堆栈中弹出
  • \)@ - 一个)@字符串

关于c# - 正则表达式公式 - 无法识别公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71395090/

相关文章:

C# [使用] 作为数据注解

java - 用于验证内置 XSD 类型的正则表达式或库?

javascript - 用于获取 url 路径名的正则表达式

regex - sed 在两个字符串之间查找和替换字符

带有正则表达式 youtube 视频 ID 的 Javascript 格式数组

php - 如何结合使用 PHP、MySQL 和 AJAX 使用户能够将保留字符输入到数据库中?

c# - 修改 string.Substring

c# - 生成的 LINQ 类的动态属性访问

c# - 如何在mysql连接中正确地将 'localhost'替换为你自己的公共(public)IP

c# - 将地理分布表示为线性概率中的约束?