如何跳过字符串之间的字符?

时间:2019-03-25 06:46:37

标签: c# regex linq

我对正则表达式很陌生,我需要从' '之间的字符串中获取特定值

使用正则表达式能够获取值,但是当'之间有第三个' '时会获得异常。

变量规则包含整个字符串

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

传递以下字符串时

规则:“街道地址”
      一定是              “班德拉(西)班德拉圣安德鲁路4楼萨米尔综合楼”(默认值)

期望值是街道地址班德拉(西)安德鲁圣安德鲁路4楼的萨米尔综合大楼

但获得街道地址圣安德鲁4楼Samir Complex

1 个答案:

答案 0 :(得分:6)

在匹配撇号时,您不想匹配每个 :在您的情况下,'中的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();