繁体   English   中英

如何构造没有特定字符的正则表达式?

[英]How to construct a regex which is not preceded by a specific character?

我正在用C ++准备PCRE正则表达式。 我想准备一个正则表达式,在该正则表达式中不应包含特定字符。

假设我有以下输入字符串:

Str1 = "www.host.com/abc/files/my.pdf" 
Str2 = "www.host.com/abc/files/takeprint.jsp?filenam=my.pdf" 

正则表达式的外观与Str1匹配,但与Str2不匹配。

我尝试过使用正则表达式,但没有用。

regex = "(.+)my(.*)(?<!\?)pdf$"

开始时使用负前瞻。

^(?!.*\?.*\.pdf$).+my\.pdf$

演示

这是我认为可以解决此问题的RegEx:

.*/([^?]+?\.pdf$)

它将贪婪地匹配到最后一个/ 之后,它将捕获不包含?的任何长度的字符串? ,只要字符串的结尾以.pdf结尾。

重要的部分是字符集[^?] ,它涵盖了不是问号的任何字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM