我有一个遵循一些规则的表达式:
''%内部   可以有零个或多个''''表达:
(?i)^(?<q>['])[%\p{Zs}\p{L}\p{N}|()]*\k<q>$
现在我需要另一个表达式来替换所有)和(例如,在"TEST"的字符串中,但仅当它们没有被''包围时.诀窍是当时)或(被''包围但是这些字符属于一对不同的'',它不应该通过.
结果示例:
    '(' > pass
    ' ( ' > pass
    ')'   > pass
    ' ) '   > pass
    ' content here ' ' )'  > pass
    ' content here' ) ' another content'  > does not pass
请注意,第一个内容有'',第二个内容也有.任何)或(如果它介于它们之间,则不应通过).
我不是正则表达式的专业人士,所以如果你不知道它是怎么回事,任何相关的文档或教程都会有很大的帮助.
您可以使用正则表达式:
^.*[()](?=[^']*'(?>(?:[^']*'[^']*){2})*$)
请参阅演示。
代码:
var rgxHardNut = new Regex(@"^.*[()](?=[^']*'(?>(?:[^']*'[^']*){2})*$)");
var check1 = rgxHardNut.IsMatch("'('");  // true
var check2 = rgxHardNut.IsMatch("' ( '");// true
var check3 = rgxHardNut.IsMatch("')'");  // true
var check4 = rgxHardNut.IsMatch("' ) '");// true
var check5 = rgxHardNut.IsMatch("' content here ' ' )'"); // true
var check6 = rgxHardNut.IsMatch("' content here' ) ' another content'"); // false
| 归档时间: | 
 | 
| 查看次数: | 160 次 | 
| 最近记录: |