我很难创建一个正则表达式,该表达式应匹配在特定模式上构建的所有网址,例如http://subdomain.example.com/reply/aoo/spo/4429163785
这是我到目前为止写的正则表达式。
"/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/"
请帮我改进我的正则表达式。
答案 0 :(得分:1)
将分隔符更改为其他内容,这样您就不必偶尔转义它。另外,请勿捕获不允许任何变化的字符串部分(例如.craigslist.org/reply/
):
"~^(https?)://([a-z]+)\\.craigslist\\.org/reply/([a-z]{3})/spo/([0-9]{10})$~"
说明:
~
开头分隔符
^
匹配字符串的开头
(https?)
匹配http
或https
- 抓住它
://
匹配冒号后跟两个正斜杠
([a-z]+)
匹配一个或多个小写字符 - 捕获它
\\.
匹配期间
craigslist
完全按照给定的字符匹配字符
\\.
匹配期间
org/reply/
完全按照给定的字符匹配字符
([a-z]{3})
匹配三个小写字符 - 捕获它
/spo/
完全按照给定的字符匹配字符
([0-9]{10})
匹配十个数字字符 - 捕获它
$
匹配字符串的结尾
~
结算分隔符
答案 1 :(得分:1)
"/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org\/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/"
在回复之前,您忘了在.org部分之后逃离/
。