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