[英]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.