C# 匹配/u/{单词、下划线或数字}的正则表达式

C# 匹配/u/{单词、下划线或数字}的正则表达式,c#,regex,C#,Regex,我已经尝试了两天,但都未能成功匹配/u/{word或下划线或数字}。我还需要忽略链接中的值(例如:。我已经用尽了所有选项。有人能帮我吗 编辑:我不熟悉正则表达式,但仍在努力解决它们。如果这是一个无意义的问题,请原谅。澄清一下,我可以很好地获得匹配项。我只是不明白在正则表达式中,如果某个字符跟随,如何完全忽略匹配项 例如: /u/username /u/username这是 此/is/u/user 我想匹配前两次出现的/u/username 这很尴尬,但这是我当前的正则表达式/u/\w*[^”]

我已经尝试了两天,但都未能成功匹配/u/{word或下划线或数字}。我还需要忽略链接中的值(例如:
。我已经用尽了所有选项。有人能帮我吗

编辑:我不熟悉正则表达式,但仍在努力解决它们。如果这是一个无意义的问题,请原谅。澄清一下,我可以很好地获得匹配项。我只是不明白在正则表达式中,如果某个字符跟随,如何完全忽略匹配项

例如:

/u/username

/u/username
这是

此/is/u/user

我想匹配前两次出现的/u/username


这很尴尬,但这是我当前的正则表达式
/u/\w*[^”]

您可以使用此模式:

/u/\w*
它将匹配字符串
/u/
,后跟零个或多个字母、数字或下划线。若要确保字符串仅包含此模式,请使用开始(
^
)和结束(
$
)锚定,如下所示:

^/u/\w*$
例如:

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

如果您试图对HTML进行一些特殊的解析,恐怕正则表达式是一个非常糟糕的选择。您确实应该先找到一些正确解析文档的方法。不过,如果这个序列恰好位于
href
属性中,这里有一个非常粗糙的模式将忽略该序列(它还假设属性值将被引号包围):

(?
例如:

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

您可以使用“执行此操作”模式:

/u/\w*
它将匹配字符串
/u/
,后跟零个或多个字母、数字或下划线。若要确保字符串仅包含此模式,请使用开始(
^
)和结束(
$
)锚定,如下所示:

^/u/\w*$
例如:

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

如果您试图对HTML进行一些特殊的解析,恐怕正则表达式是一个非常糟糕的选择。您确实应该先找到一些正确解析文档的方法。不过,如果这个序列恰好位于
href
属性中,这里有一个非常粗糙的模式将忽略该序列(它还假设属性值将被引号包围):

(?
例如:

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)*[a-z,A-Z,0-9]+$

只要您想忽略HTML代码,它实际上会捕获HTML标记特有的字符。这样就可以了。

此正则表达式将满足您的测试场景

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


这实际上抓住了HTML标记特有的字符,只要你想忽略HTML代码。这就可以了。

这以任何可能的方式匹配它。它在我试图忽略的字符串中也匹配它。如果它后面或前面有空格呢?我试着理解这些内容,我已经达到了URL部分但是我迷路了。你能看看我更新的问题吗?我更新了示例。我不想解析html,我想忽略它。如果后面有引号,就不匹配。如果后面有/,就不匹配。我怎么做?它还需要多行,如果你尝试复制/粘贴我发布的内容,它就不能正常工作。我很抱歉给你带来问题。@CalebKeith这没问题,但是当涉及到正则表达式时,你必须非常精确地告诉人们你想要匹配什么。太棒了,这太完美了。这太神奇了。我仍在努力理解这一点,但这在将来的情况下也会非常有用。我必须替换*with+,因为我需要在/u/…之后添加一些文本。但是我没有指定。非常感谢您的帮助和耐心。这与它以任何可能的方式匹配。它也与我试图忽略的字符串中的它匹配。如果它后面或前面有空格呢?我试图理解这些内容,我已经找到了URL部分,但我迷路了。C你可以查看我更新的问题吗?我更新了示例。我不想解析html,我想忽略它。如果后面有引号,则不匹配。如果后面有/,则不匹配。我如何才能做到这一点?它还需要是多行的,如果你尝试完全复制/粘贴我发布的内容,则无法正常工作。很抱歉,我要“这是你的问题。@CalebKeith这没问题,但是当涉及到正则表达式时,你必须非常精确地告诉人们你想要匹配什么。太棒了,这太完美了。这太神奇了。我仍在努力理解这一点,但这在将来的情况下也会非常有用。我不得不用+替换*因为我不知道eded在/u/之后添加了一些文本…但是我没有指定。非常感谢您的帮助和耐心。添加一些测试用例和示例可能会有所帮助抱歉,不习惯发布…只是添加了一个快速示例,应该可以说明我正在尝试做什么。您需要阅读有关消极前瞻的内容。您可以将您的正则表达式放到现在吗?我将其添加到发帖,这可能很糟糕。你想匹配
/u/username
,但不想匹配
/u/user
?这里的区别是什么?为什么要匹配前两个案例而不是第三个?添加一些测试案例和示例会有帮助对不起,不习惯发帖…只是添加了一个快速示例,说明我正在尝试做什么。你需要吗阅读消极前瞻。你能把你的正则表达式放到现在吗?我在帖子中加了这个,它可能很糟糕。你想匹配
/u/username
,但不匹配
/u/user
?这里有什么区别?为什么要匹配前两种情况而不是第三种情况?