java - 匹配包含子域的 URL

标签 java python regex

我希望以下正则表达式能够匹配包含子域的 URL,但不匹配没有子域的 URL:

"^https?://(?:www\.)?(.*\.lexpress\.fr).*"

即匹配:

http://blah.lexpress.fr/whatever/test.html

不匹配:

http://www.lexpress.fr/whatever/test.html

我在 Java 和 Python 中尝试过,两个 URL 都匹配 - 为什么会这样以及我需要如何更改表达式以仅匹配第一个。

谢谢,

/大卫

最佳答案

您需要一个negative look-ahead assertion :

"^https?://(?!www\.)(.*\.lexpress\.fr).*"

这会匹配 :// 字符后不包含 www. 的任何字符串。

Python 演示:

>>> import re
>>> subdomain = re.compile(r"^https?://(?!www\.)(.*\.lexpress\.fr).*")
>>> subdomain.match('http://www.lexpress.fr') is None
True
>>> subdomain.match('http://lexpress.fr') is None
True
>>> subdomain.match('http://subdomain.lexpress.fr').groups()
('subdomain.lexpress.fr',)
>>> subdomain.match('https://nested.subdomain.lexpress.fr').groups()
('nested.subdomain.lexpress.fr',)

关于java - 匹配包含子域的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302567/

相关文章:

java - 如何使用 Java 库根据数组属性过滤 Google Content Store 数据

java - Spring 与 ftp 跳过文件集成

java - 使用类的实例作为引用

javascript - 在以逗号分隔的字符串中每第四个字符后添加连字符

Javascript获取数字的前两位数字

php - 用正则表达式包裹 <a> 标签中的链接

java - 我不知道我的错误在哪里 appcompat :design:1. 1.0

python - OpenCV(cv2)Python findChessboardCorners 在看似简单的棋盘上失败

python - 类型错误 : 'method' object is not iterable MySQL

python - 弧形中的不同颜色