当前位置: 首页 > 编程语言 > C#

在公式中查找分隔点的正则表达式Share

时间:2023-04-10 13:22:12 C#

正则表达式在公式中查找分隔点不直接支持:TableName1.FieldName1[TableName1].[FieldName1][TableName1].[FieldName1]它接受不带空格的字母数字参数,或大多数字符用方括号括起来的大括号。我想使用C#regex将点分隔符和相邻的括号替换为不同的分隔符,所以结果是:[TableName1|FieldName1][TableName1|FieldName1][TableName1|FieldName1]我还需要有Anystringliteralswithin单引号被跳过,例如:'TableName1.FieldName1'任何数字文字都被忽略,例如:12345.6789编辑:感谢您对改进我的问题的反馈。希望现在更清楚了。我写了一个全新的答案,现在澄清了这个问题:你可以在一个正则表达式中做到这一点。我认为它非常可靠,但如您所见,它并不是完全不言自明的,这就是为什么我冒昧地对它发表评论的原因。希望这是有道理的。幸运的是.NET允许重用命名捕获组,否则您将不得不分几步完成。resultString=Regex.Replace(subjectString,@"(?:#Eithermatch...(?#(andcaptureintobackref)(?=w*p{L})#(只要它包含至少一个字母):w+#一个或多个字母数字字符,)#(捕获组结束)..#然后是文字点,(?#(现在再次捕获,进入backref)(?=w*p{L})#(只要因为它至少包含一个字母):w+#一个或多个字母数字字符。)#(捕获组结束)和匹配结束。|#或:[#匹配文字[(?#(现在捕获到backref)[^]]+#除了]之外的一个或多个字符)#(捕获组结束)。].[#匹配文字].[(?#(捕获到backref)[^]]+#除了]之外的一个或多个字符#(Endofcapturinggroup).]#Matchaliteral])#Endofalternation.匹配现在结束了,但是(?=#onlyiftherestofthelinematcheseither...[^']*$#仅非引号字符|#或[^']*'[^']*'#包含偶数个引号字符[^']*#加上任意数字非引号字符$#直到行尾。)#前瞻断言结束。","[${before}|${after}]",RegexOptions.Multiline|RegexOptions.IgnorePatternWhitespace);希望你能试试这个正则表达式:/(w[0-9]**)+/g这样会过滤掉除全部内容以外的所有字母数字,如果对你有用,需要了解更多C#学习教程,希望大家多多关注,本文收集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处: