c#正则表达式-命名组后的匹配选项
我相信这已经有很多次了,但尽管我已经检查了所有类似的问题,我还是没有找到解决办法 问题是我的输入URL类似于 我想匹配它的slug部分(在上面的例子中,它是tapechay) 到目前为止我试过的正则表达式是c#正则表达式-命名组后的匹配选项,c#,regex,C#,Regex,我相信这已经有很多次了,但尽管我已经检查了所有类似的问题,我还是没有找到解决办法 问题是我的输入URL类似于 我想匹配它的slug部分(在上面的例子中,它是tapechay) 到目前为止我试过的正则表达式是 http://.*\.justin\.tv/(?<Slug>.*)(?:#.)? http://.*\.justin\.tv/(?<Slug>.*)(?:#.) http://.\.justin\.tv/(?*)(?:#)? http://.\.justi
http://.*\.justin\.tv/(?<Slug>.*)(?:#.)?
http://.*\.justin\.tv/(?<Slug>.*)(?:#.)
http://.\.justin\.tv/(?*)(?:#)?
http://.\.justin\.tv/(?*)(?:#)
但我不能想出一个解决办法。要么在第一个url中失败,要么在其他url中失败
感谢您的帮助。解析Uri的最简单方法是使用类: 如果你不在正则表达式上,你可以尝试一些更具体的方法:
Match mate = Regex.Match(str, @"http://(\w+\.)*justin\.tv(?:/(?<Slug>[^#]*))?");
Match mate=Regex.Match(str,@“http://(\w+\)*justin\.tv(?:/(?[^#]*))?”;
-确保匹配域,而不是字符串中的任何其他位置(例如,哈希或查询字符串)(\w+\)*
-可选组,包含所需字符串<代码>[^#]限制了您希望在slug中看到的字符,因此它应该消除了在它之后额外的组的需要(?:/(?[^#]*)?
- 解析Uri的最简单方法是使用类:
如果你不在正则表达式上,你可以尝试一些更具体的方法:
Match mate = Regex.Match(str, @"http://(\w+\.)*justin\.tv(?:/(?<Slug>[^#]*))?");
Match mate=Regex.Match(str,@“http://(\w+\)*justin\.tv(?:/(?[^#]*))?”;
-确保匹配域,而不是字符串中的任何其他位置(例如,哈希或查询字符串)(\w+\)*
-可选组,包含所需字符串<代码>[^#]限制了您希望在slug中看到的字符,因此它应该消除了在它之后额外的组的需要(?:/(?[^#]*)?
http://.\.justin\.tv/(?*)#*?
或
http://.\.justin\.tv/(?*)(#|$)
http://.\.justin\.tv/(?*)#*?
或
http://.\.justin\.tv/(?*)(#|$)
在我看来,没有理由对“slug”之后的零件进行处理
因此,您只需要匹配主机后面不是“/”或“#”的所有字符
http://.\.justin\.tv/(?[^/#]+)
在我看来,没有理由对“slug”后面的部分进行处理
因此,您只需要匹配主机后面不是“/”或“#”的所有字符
http://.\.justin\.tv/(?[^/#]+)
感谢这一点,这实际上是一种解决问题的方法,但在我的情况下,我必须用正则表达式实现这一点——因为我有更多的URL需要解析,而我无法用uri段解析它们。事实上,你拥有的越多,正则表达式就越复杂。除非您正在进行URL重写(有时仅限于正则表达式),否则这应该是更好的选择。这也将处理棘手的URL,如http://www.justin.tv /warandhate?source=justin.tv/pachetajay
,当前在正则表达式中失败。不管怎样,我已经添加了一个regex替代方法。感谢regex方法。实际上,我的URL是一个fore-livestream,一个用于ustream等等。因此每个都有特定的正则表达式要处理。感谢这一点,这实际上是一种解决问题的方法,但在我的情况下,我必须用正则表达式实现这一点——因为我有更多的URL要解析,而我无法用uri段解析它们。实际上,你拥有的越多,正则表达式就越复杂。除非您正在进行URL重写(有时仅限于正则表达式),否则这应该是更好的选择。这也将处理棘手的URL,如http://www.justin.tv /warandhate?source=justin.tv/pachetajay
,当前在正则表达式中失败。不管怎样,我已经添加了一个regex替代方法。感谢regex方法。实际上,我的URL是一个fore-livestream,一个用于ustream等等。因此,每个都将有特定的正则表达式进行处理。
http://.*\.justin\.tv/(?<Slug>.*)#*?
http://.*\.justin\.tv/(?<Slug>.*)(#|$)