如何构造一个前面没有特定字符的正则表达式
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$
演示
这是一个我认为可以解决问题的正则表达式:
.*/([^?]+?.pdf$)
它会贪婪地匹配任何东西,直到最后/
.在此之后,它将捕获不包含?
的任何长度的字符串,只要字符串的末尾以 .pdf
结尾。
重要的部分是字符集[^?]
它涵盖了任何不是问号的字符。
相关文章:
- 带有多个字符分隔符的正则表达式
- C++ [正则表达式] 如何提取给定的字符值
- C++正则表达式字符类不匹配
- 通过正则表达式拆分字符串会切断结果的第一个字母
- 正则表达式 - 匹配不遵循特定模式的字符
- 使用具有特殊字符的正则表达式标记 C++ 字符串
- 正则表达式:从模式字符串 1.string2'string3 中提取字符串,其中字符串 1 可以包含 '." 字符
- 提升正则表达式 cpp 用于查找 %% 之间的字符串,输出不包括 % 字符本身
- 如何使用正则表达式匹配不包含特殊字符(&、\、<、>、|、)的字符串,除非它们以反斜杠开头
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- C++正则表达式中的特殊字符
- 使用正则表达式为每个连续的大写字符附加'.'
- C++正则表达式转义标点字符,如"."
- 正则表达式.查找所有带有非拉丁字符的单词
- 如何构造一个前面没有特定字符的正则表达式
- 正则表达式中的成对字符
- 如何在 C/C++ PCRE 正则表达式中使用 UTF-8 文字字符
- 正则表达式:捕获不带前导字符的字符串
- 正则表达式:仅限数字 + 字母数字 + 特殊字符