簡體   English   中英

正則表達式以匹配/ u / {單詞,下划線或數字}

[英]Regular Expression to match /u/{word or underscore or numbers}

我已經嘗試並成功失敗了兩天,無法成功匹配/ u / {單詞,下划線或數字}。 如果值在鏈接中(例如: <a href="asdfasdf/u/word" />我還需要忽略該值。我已經用盡了所有選項。有人可以在這里幫助我嗎?

編輯:我不熟悉正則表達式,並且仍在嘗試找出它們。 請問這是一個討厭的問題。 而且要澄清一下,我可以使比賽順利進行。 我只是不明白在Regex中,如果后面跟隨某個字符,如何完全忽略匹配。

例:

/u/username

/u/username這是

這個/是/ u /用戶<a href="http://www.regex.com/u/something/" />

我想匹配/ u / username的前兩個匹配項。

這很尷尬,但這是我當前的正則表達式/u/\\w*[^"]

您可以使用以下模式:

/u/\w*

它將匹配字符串/u/后跟零個或多個字母,數字或下划線。 為確保字符串僅包含此模式,請使用起始( ^ )和結束( $ )錨,如下所示:

^/u/\w*$

例如:

string result = Regex.Match(input, @"^/u/\w*$").Value;

如果您嘗試對HTML進行一些特殊的解析,恐怕正則表達式是一個非常糟糕的選擇。 您確實應該首先找到一種正確解析文檔的方法。 盡管如此,這是一個非常粗糙的模式,如果它恰好位於href屬性內部(它將假定屬性值將用引號引起來),它將忽略此序列:

(?<!href="[^"]*)/u/\w*

例如:

string input = @"<a href=""http://x/u/foo"">/u/bar</a>";
string pattern = @"(?<!href=""[^""]+)/u/\w*";
string Regex.Match(input, pattern).Value; // will match /u/bar but not /u/foo

此模式將匹配前面沒有單詞字符(字母,數字或下划線),引號或正斜杠的任何序列:

(?<![\w""/])/u/\w*

此示例說明如何使用它從字符串中獲取所有匹配項:

var input = @"/u/username
/u/username this is
this/is/u/user <a href=""http://www.regex.com/u/something/"" />";
var pattern = @"(?<![\w""/])/u/\w*";
foreach(Match match in Regex.Matches(input, pattern))
{
    System.Console.WriteLine(match.Value);
}

輸出將是我:

/u/username
/u/username

此正則表達式將滿足您的測試方案

\w*(/u)*[a-z,A-Z,0-9]+$

實際上,只要您想忽略HTML代碼,它就會捕獲HTML標記特有的字符。 這將達到目的。

暫無
暫無

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

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