【发布时间】:2015-05-18 15:36:21
【问题描述】:
我正在努力让这个正则表达式模式完全正确,如果有人有更好的选择,我愿意接受正则表达式之外的其他选项。
情况:
我基本上是在寻找针对 C# 中的文本列解析 T-SQL“in”子句。所以,我需要这样的字符串值:
"'don''t', 'do', 'anything', 'stupid'"
并将其解释为值列表(稍后我会处理双单引号):
"don''t""do""anything""stupid"
我有一个适用于大多数情况的正则表达式,但我正在努力将其推广到可以接受任何字符或组内双引号的程度:(?:')([a-z0-9\s(?:'(?='))]+)(?:')[,\w]*
我对正则表达式相当有经验,但很少(如果有的话)发现需要环顾四周(因此相应地降低我对正则表达式经验的评估)。
所以,换一种说法,我想要取一串以逗号分隔的值,每个值都用单引号括起来,但可以包含双引号,并输出每个这样的值。
编辑 这是我当前正则表达式的一个无效示例(我的问题是我需要处理分组中的所有字符,并在遇到单引号后没有第二个单引号时停止):
"'don''t', 'do?', 'anything!', '#stupid$'"
【问题讨论】:
-
你不能在输入的任何地方寻找两个连续的单引号吗?如:
inputString.Contains("''") -
有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。
-
你能举一个你面临的不工作的常见例子
-
@Dusan 我很清楚这句话,因此我注意到我对其他方法持开放态度
-
只用一个简单的状态机。逐个字符地读取字符串,并跟踪您当前是否在单引号内。额外的好处是,查看您的代码的任何人都不需要破译神秘的正则表达式。
标签: c# .net regex regex-lookarounds