我对正则表达式很陌生,我需要从' '
之间的字符串中获取特定值
使用正则表达式能够获取值,但是当'
之间有第三个' '
时会获得异常。
变量规则包含整个字符串
IEnumerable<string> possibleValues = Regex
.Matches(rule, @"'(?<val>.*?)'")
.Cast<System.Text.RegularExpressions.Match>()
.Select(match => match.Groups["val"].Value)
.ToArray();
传递以下字符串时
规则:“街道地址”
一定是
“班德拉(西)班德拉圣安德鲁路4楼萨米尔综合楼”(默认值)
期望值是街道地址和班德拉(西)安德鲁圣安德鲁路4楼的萨米尔综合大楼
但获得街道地址和圣安德鲁4楼Samir Complex
答案 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();