首页 > 解决方案 > 如何跳过字符串之间的字符?

问题描述

我对正则表达式很陌生,我需要从包含在' '

使用正则表达式能够获取值,但 '在中间有三分之一时会出现异常' '

变量规则包含整个字符串

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)”(默认值)

预期值为Street Address and Samir Complex, 4th Floor, St Andrew's Road, Bandra (West)

但获得街道地址萨米尔综合大楼,4 楼,圣安德鲁

标签: c#regexlinq

解决方案


匹配撇号时,您不想匹配每一个:在您的情况下'Andrew's应该跳过 inside。您可以尝试检查单词边界;请参阅正则表达式中 \b 和 \B 之间的区别中的详细信息

@"'(?<val>.*?)'\B"

代码:

string[] possibleValues = Regex
  .Matches(rule, @"'(?<val>.*?)'\B")
  .Cast<Match>()
  .Select(match => match.Groups["val"].Value)
  .ToArray();  

推荐阅读