簡體   English   中英

RegEx搜索以特殊符號結尾或開頭的整個單詞

[英]RegEx searching whole words ending or beginning with special symbols

我正在嘗試在可能包含#的文件中進行搜索,並嘗試了以下兩個RegEx語句,但均無效。 有人可以給我顯示正確的RegEx,以便我可以搜索常規的字母數字字符,以及用戶是否包含#或其他特殊字符嗎?

使用NLog,我可以看到該字符串已正確發送到Web服務。 然后,我構建以下RegEx(嘗試了2種不同的方式)。

\b(?:C#)\b
\b(?:C\#)\b

這是我文件中的部分字符串,您看到其中包含我要搜索的字符串:

by multiple customers C# both external and internal

C#代碼:

var reader = File.ReadAllText(currentFile);

var pattern = @"\b(?:" + searchPhrases[0] + @")\b"; \\ I've tried escaping it also.

// Works for a word like this ("White Paper" or "Paper" but not for "C# White Paper")
if (Regex.IsMatch(reader, pattern, RegexOptions.IgnoreCase))
{
    searchResults.AppendLine(currentFile);

    searchResults.Append("|");
}

阿賈克斯:

$.ajax({
    url: "searchservice.asmx/SearchFiles",
    data: { searchParameters: parameters, searchOnCompletePhrase: completePhrase },
    type: "GET",
    dataType: "text",
    contentType: "text/plain; charset=utf-8",
    success: function (data) {
        processSearchData(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        lookupErrorDefinition(this);

        console.log(XMLHttpRequest.status);
    }
});

您可以使用以下兩種解決方案之一:

 var pattern = @"(?<!\w)(?:" + Regex.Escape(searchPhrases[0]) + @")(?!\w)";

要么

var pattern = @"(?<!\S)(?:" + Regex.Escape(searchPhrases[0]) + @")(?!\S)";

在第一個解決方案中, (?<!\\w)匹配不帶單詞char的位置,而(?!\\w)匹配不帶單詞char的位置。

在第二個解決方案中, (?<!\\S)匹配不以非空白char開頭的位置(即,以空白或字符串開頭),而(?!\\S)匹配不以非空白char開頭的位置。后跟非空格字符(即,后跟空格字符或字符串結尾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM