如何使用C#正则表达式解析以下内容

本文关键字:何使用 正则表达式 | 更新日期: 2023-09-27 18:22:01

我有这样的文本:"((FIELD1_NAME like 'Product%') And (Instr(FIELD1_NAME, 'Product_typ') = 1))";

我想从字符串的Instr部分解析FIELD1_NAMEProduct_typ

这不起作用:@"Instr((?<column>[A-Z0-9_]+), '(?<value>([^']|(''))+)'"

如何使用C#正则表达式解析以下内容

您需要逃离Instr之后的第一个(,并将value组内的组设为非捕获组

Instr'((?<column>[A-Z0-9_]+),'s*'(?<value>(?:[^']|(''))+)'

演示

此正则表达式使用惰性量词上的点通来获取var
主要是为了修剪,因为你没有声明它是为了验证。

 # @"(?s)Instr's*'('s*(?<feild>.*?)'s*,'s*''s*(?<prodtype>.*?)'s*''s*')"
 (?s)
 Instr
 's* 
 '(
 's* 
 (?<feild> .*? )               #_(1)         
 's* , 's* 
 '
 's* 
 (?<prodtype> .*? )            #_(2)         
 's* 
 '
 's* 
 ')