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