用于匹配基本路径的正则表达式

我试图拿出一个正则表达式来匹配某个基本路径。规则应该是匹配基本路径本身加上“/”或“.”以及路径的其余部分。

例如,给定 /api/ping,以下内容应匹配

/api/ping.json
/api/ping
/api/ping/xxx/sss.json
/api/ping.xml

这应该不匹配

/api/pingpong
/api/ping_pong
/api/ping-pong

我尝试使用以下正则表达式:

/api/ping[[\.|\/].*]?

但它似乎没有抓住这个案例。/api/ping

这是正则表达式风暴测试器的链接

--

更新:感谢答案,现在我有了这个版本,可以更好地反映我的推理:

\/api\/ping(?:$|[.\/?]\S*)

表达式要么在 ping(即该部分)之后结束,要么以 一个 继续,要么后跟任何非空格字符$./?

这是正则表达式


月关宝盒
浏览 250回答 2
2回答

ibeautiful

您可以使用此正则表达式,它使用交替来确保基本路径后跟或或行尾./$\/api\/ping(?=\.|\/|$)\S*解释:\/api\/ping- 按字面意思匹配文本/api/ping(?=\.|\/|$)- 向前看,确保下面的内容是文字点或斜杠或行尾./$\S*- 可选择跟随路径后面的任何非空格字符演示在正则表达式中,字符集的使用是不正确的,您不需要转义点,并且在字符集中不需要交替,并且不能通过放置在字符类中来完成,并且由于字符类看起来嵌套,因此它不是必需的,也不是正确的做法。我猜你想让你的正则表达式像这样,/api/ping[[\.|\/].*]?[].||\/api\/ping([.\/].*)?$使用更正的正则表达式进行演示请注意,一旦您放入任何内容,那么它只被计为一个字符,允许字符集中包含的所有内容,因此它允许点或斜杠,并注意您需要转义为[].//\/

智慧大石

您的模式使用一个字符类,该字符类将与列出的任何字符类匹配,也可以将其编写为 .[[./|]它不匹配,因为字符类必须至少匹配 1 次,因为它不是可选的。/api/ping您可以使用交替来匹配,然后断言字符串的结尾,或者通过重复 0 次或更多次匹配正斜杠,然后不是正斜杠,然后是点和 1+ 次,然后是点和扩展来匹配结构。/api/ping|/api/ping(?:(?:/[^/\s]+)*\.\S+|$)这将匹配/api/ping按字面意思匹配(?:非捕获组(?:/[^/\s]+)*重复分组结构 0+ 次匹配,然后 1+ 次不匹配或空白字符//\.\S+匹配一个点和 1 倍以上的非空格字符|或$断言字符串的结尾)关闭非捕获组查看正则表达式演示|C# 演示
打开App,查看更多内容
随时随地看视频慕课网APP