Regex 问号(?)表示整个单词的量词
我有大量的链接,如:Regex 问号(?)表示整个单词的量词,regex,Regex,我有大量的链接,如: https%3A%2F%2Fwww.facebook.com%2F https%3A%2F%2Fwww.facebook.com%2F%3Futm\u来源 我需要捕获(%3F)序列之前的文本,如果该序列未出现在该行中,则需要捕获整行。我想在没有if-else条件适用于整条生产线的情况下这样做 我在寻找的是一种为整个字符序列应用?量词的方法,如:^(.*)[\%3F]? 另外,我知道,有一种方法可以解决这个问题,首先将HTML样式的字符转换为单个字符(%2F->“/”和%
- https%3A%2F%2Fwww.facebook.com%2F
- https%3A%2F%2Fwww.facebook.com%2F%3Futm\u来源
?
量词的方法,如:^(.*)[\%3F]?
另外,我知道,有一种方法可以解决这个问题,首先将HTML样式的字符转换为单个字符(%2F->“/”和%3F->“?”
),然后对单个字符应用?
量词,但这不是我想要解决这个问题的方法 您可以使用
^(?:(?!%3F).)*
这将产生与以下表达式相同的结果:
^.*?(?=%3F|$)
但其中最有效的是它们的展开对应物
^[^%]*(?:%(?!3F)[^%]*)*
见
详细信息
-字符串的开头^
-(a)除换行字符((?:(?!%3F)。*
)以外的任何字符,尽可能多的零个或多个连续出现(
),不启动*
字符序列%3F
-除换行符(*?(?=%3F |$)
)以外的任何零个或多个字符,尽可能少,最多但不包括*?
子字符串或字符串结尾(%3F
)$
^[^%]*(?:%(?!3F)[^%]*)*
模式遵循展开循环原则,其中[^%]*
匹配除%
以外的任何字符,(?:%(?!3F)[^%]*)*
匹配0个或多个未与3F
跟随的%
序列,然后匹配除%
以外的0个字符。由于前瞻条件仅在%
时触发,因此如果字符串中没有过多的%
符号(在现实世界中不应如此),性能会更好。我怀疑您想要^(?(?!%3F)。*
我不是100%确定您想要什么,但我认为您正在寻找^.*(?=%3F |$)
有什么反馈吗?什么是regex引擎?如果你使用Go,你将需要类似的东西。谢谢大家。他们两个都解决了我的问题。我将这个正则表达式条件用于Python脚本