[英]How to match words that doesn't start nor end with certain characters using Regex?
您当前使用的模式匹配,因为\b
正确断言了"s
和g"
之间的位置(单词字符[a-zA-Z0-9_]
和非单词字符之间的 position)。 您可以使用以下方法之一:
(?<?['"])\bstring\b(?!['"])
-在此处查看它的使用情况
(?<!['"])
- 确保"
不在前面。(?!['"])
- 确保"
不会继续。(?<=\s|^)\bstring\b(?=\s|$)
-在此处查看它的使用情况
(?<=\s|^)
- 确保空格或行首在前。(?=\s|$)
- 确保空格或行尾继续。(?<=\s|^)string(??\s+(?!stop)|$)
之类的东西会确保单词后面没有单词stop
(?<=(?<?stop\s*)\s+|^)string(?=\s+|$)
之类的东西会确保单词不跟随单词stop
- 请注意后视中的量词( \s+
)在大多数正则表达式引擎中是不允许的,.NET 允许它。(?<=\s|^)\bstring\b(?=\s|$)(?!\z)
之类的东西会确保单词不在字符串的末尾(如果多行)。 如果它在空格之间,此正则表达式将选择字符串: \sstring\s
var sample = "\"string\" string \"string\" astring 'string_ string?string string ";
var regx = new Regex(@"\sstring\s");
var matches = regx.Matches(sample);
foreach (Match mt in matches)
{
Console.WriteLine($"{mt.Value} {mt.Index,3} {mt.Length,3}");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.