- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解正则表达式的工作原理。我一点一点地明白了。但是,我不完全理解这一点。它基本上是完全限定域名的正则表达式,但要求结尾不能是 .arpa
。
(?=^.{4,253}$)(^([a-zA-Z0-9]{1,63}\.)+[a-zA-Z]{2,63}[^.arpa]$)
https://regex101.com/r/hU6tP0/3
这与 google.uk
不匹配。如果我将其更改为:
(?=^.{4,253}$)(^([a-zA-Z0-9]{1,63}\.)+[a-zA-Z]{1,63}[^.arpa]$)
它再次工作。
但这也行
(?=^.{4,253}$)(^([a-zA-Z0-9]{1,63}\.)+[a-zA-Z]{2,63}$)
这是我的思考过程
?=^.{4,253}$)(^([a-zA-Z0-9]{1,63}\.)+[a-zA-Z]{2,63}[^.arpa]$)
我是这样看的
(?=
是积极的展望(有人可以向我解释这到底是什么意思吗?)据我现在的理解,它只是意味着字符串需要匹配正则表达式。
^.{4,253}$)
匹配所有字符,但长度必须在 4 到 253 个字符之间。
(^([a-zA-Z0-9]{1,63}\.)
启动一个捕获组并在其中创建另一个捕获组。这个捕获组表示每个非特殊字符可以被写入 1 到 63 次或者直到 .
被写入。
+
前面的捕获组可以无限重复,但它应该总是以 .
结尾。这样下一个捕获组就开始了。
[a-zA-Z]{2,63}
然后你可以写 a 到 z 的次数不限,但它必须在 2 到 63 之间。
[^.arpa]$)
最后一个字符不能是.arpa
。
谁能告诉我哪里出错了?
最佳答案
这并不像你想象的那样:
[^.arpa]
所有的意思是“以不是字母 apr.
之一的东西结尾”——它是一个否定的字符类。
您可能会想到 negative lookahead assertion :
(?!\.arpa)$
但是,如果您尝试在正则表达式中组合多个条件,我建议您可能使用了错误的工具来完成这项工作。由于贪婪/非贪婪匹配等原因,它最终变得复杂且难以调试。
您的“正/负”前瞻是匹配未被其他模式片段包围的模式片段。但是,如果您要匹配可变宽度,这可能会产生一些意想不到的结果,因为正则表达式引擎会回溯,直到找到匹配的东西。
一个更简单的例子:
([\w.]+)(?!arpa)$
应用于:
www.test.arpa
会匹配吗?群里有什么?
... 它会匹配,因为 [\w\.]+
会消耗所有它,然后前瞻将不会“看到”任何东西。
如果您使用:
([\w]+)\.(?!arpa)
相反 - 你会捕获...... www
,但你不会匹配 test
(例如 g 标志,因为 www
后面没有 .arpa
,但是 test
有。
https://regex101.com/r/hU6tP0/5
因此,在模式中使用否定断言确实会变得复杂。我建议干脆不要这样做,并应用两个单独的测试。你很难理解, future 的维护程序员也很难理解!
关于regex - FQDN(不包括.arpa)的这个正则表达式如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34417190/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我正在编写一个用于计算 ngram 概率的小型库。 我有一个由 arpa 文件描述的 LM(它的格式非常简单:probability ngram backoff_weight): ... -5.109
我想了解正则表达式的工作原理。我一点一点地明白了。但是,我不完全理解这一点。它基本上是完全限定域名的正则表达式,但要求结尾不能是 .arpa。 (?=^.{4,253}$)(^([a-zA-Z0-9]
嘿,抱歉,我是 C 新手,但下面的代码是我从教程中找到的,我只是想知道他们在 memset 函数中使用 \0 是否有具体原因?还是只是随机的? #include (...) int retva
我正在寻找一个 pythonic 接口(interface)来加载 ARPA 文件(后退语言模型)并使用它们来评估一些文本,例如得到它的对数概率、困惑度等。 我不需要在 Python 中生成 ARPA
问题真的很简单。我需要一个工具来将 char* 转换为 ip 地址并在中使用它 sockaddr_in.s_addr arpa/inet.h 有 inet_addr() 功能,但我不确定我是否已经在
我正在使用 Xcode 7.2 构建 NC 应用程序。我从http://www.opensource.apple.com/source/netcat/netcat-30.20.1/下载NC源代码 当我
我有一个大约 1 GB 的 ARPA 文件。我必须在不到 1 分钟的时间内在其中进行搜索。我已经搜索了很多,但我还没有找到合适的答案。我想我不必阅读整个文件。我只需要跳转到文件中的特定行并阅读整行。
我正在处理 IMAP 邮箱,但在使用 mxDateTime 包解析日期时遇到问题。特别是像“Fri, 1 Jan 1904 00:43:25 -0400”这样的早期日期会造成麻烦: >>> impor
我想创建一个将近 50,000 个单词的 ARPA 语言模型文件。我无法通过将我的文本文件传递给 CMU 语言工具来生成语言模型。是否有任何其他链接可以获得这些单词的语言模型? 最佳答案 我以为我会回
当我使用命令 nslookup在服务器上 - 它适用于 IP 和 DNS。但是在客户端(客户端从服务器(dhcp)获取所有信息)我在使用 nslookup 192.168.1.10 时遇到了这样的错误
我为客户端和服务器创建了一个 C 程序,用于将数据从一台计算机传输到另一台计算机。代码如下 #include #include #include #include #include #inc
其中一个不会让另一个可见吗?它们之间有什么区别以及何时使用什么?我的教授为我提供了一个入门代码,他使用了 在服务器套接字和 在客户端中。这有什么原因吗? 最佳答案 这是 C 库中的常见模式: head
我是一名优秀的程序员,十分优秀!