特定 url 格式的正则表达式

Jon*_*an. 1 java regex string string-matching

我正在尝试获取一个正则表达式来匹配特定的 url 格式。特别是 stackexchange 的 api url。例如,我希望这两个匹配:

http://api. stackoverflow .com/1。1 /问题/ 1234 /答案  
http://api. Physics.stackexchange .com/1。0 /问题/ 5678 /答案

在哪里

  • 不是粗体的所有内容都必须相同。
  • 第一个粗体部分,只能由 a 到 z 组成,并且一个或没有句号。
    • 这也很好,如果有一个句号,“stackexchange”这个词必须跟在后面。然而这不是关键。
  • 第二个粗体部分只能是 1 或 0。
  • 最后粗体部分只能是数字 0 到 9,并且可以是任意长度
  • 在 url 之前或之后根本不能有任何东西,甚至没有斜杠

Mik*_*uel 5

Pattern.compile("^(?i:http://api\\.(?:[a-z]+(?:\\.stackexchange)?)\\.com)/1\\.[01]/questions/[0-9]+/answers\\z")
Run Code Online (Sandbox Code Playgroud)

^确保它开始于输入的开始,以及\\z确保使其在输入的末尾。所有的点都被转义了,所以它们是字面意思。该(?i:...)部分根据 URL 规范使域和方案不区分大小写。的[01]唯一字符0或1匹配[0-9]+的匹配1个或多个阿拉伯数字。其余的是不言自明的。