繁体   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