如何跳过字符串之间的字符?
Posted
技术标签:
【中文标题】如何跳过字符串之间的字符?【英文标题】:How do I skip a character getting between the string? 【发布时间】:2019-08-15 09:07:41 【问题描述】:我对正则表达式很陌生,我需要从 ' '
之间包含的字符串中获取特定值
使用正则表达式能够获取值,但在' '
之间存在第三个'
时会出现异常。
变量规则包含整个字符串
IEnumerable<string> possibleValues = Regex
.Matches(rule, @"'(?<val>.*?)'")
.Cast<System.Text.RegularExpressions.Match>()
.Select(match => match.Groups["val"].Value)
.ToArray();
当下面的字符串被传递时
规则:“街道地址” 一定是 'Samir Complex, 4th Floor, St Andrew's Road, Bandra (West)'(默认值)
预期值为街道地址和Samir Complex, 4th Floor, St Andrew's Road, Bandra (West)
但获得街道地址和Samir Complex, 4th Floor, St Andrew
【问题讨论】:
您在Andrew's
中有一个撇号'
,并且您尽可能很少 匹配 - .*?
,这就是为什么正则表达式在找到的第一个撇号处停止跨度>
试试@"'(?<val>.*?)'\B"
模式
是的,谢谢这个作品你能把它放在答案中,这样我就可以接受这个
【参考方案1】:
当匹配撇号时,您不想匹配每一个:在您的情况下,Andrew's
中的'
应该跳过。
您可以尝试检查单词边界;详情见Difference between \b and \B in regex
@"'(?<val>.*?)'\B"
代码:
string[] possibleValues = Regex
.Matches(rule, @"'(?<val>.*?)'\B")
.Cast<Match>()
.Select(match => match.Groups["val"].Value)
.ToArray();
【讨论】:
以上是关于如何跳过字符串之间的字符?的主要内容,如果未能解决你的问题,请参考以下文章