我需要提取在具有以下结构的URL中指定的ID:
https://trello.com/c/iGjJLqwr/1-test-project
在上面的示例中,我要提取:
iGjJLqwr
我需要在Zapier中使用根据文档使用python regex的regex表达式
以下python正则表达式在正确的方向上运行,但仍然返回太多:
[^https://trello.com/c/][\w]+
返回3个匹配项:
Match 1
Full match 21-29 iGjJLqwr
Match 2
Full match 31-36 -test
Match 3
Full match 36-44 -project
我需要将结果限制为:
iGjJLqwr
以下正则表达式返回一个额外的正斜杠
[^https://trello.com/c/]\w+/
Match 1
Full match 21-30 iGjJLqwr/
答案 0 :(得分:2)
方括号[ ... ]
创建一个字符集,该字符集选择其中包含的任何字符中的一个。如果在开始[^ ... ]
处添加了克拉,则该组无效。该模式不考虑方括号内的完整连续字符串。
换句话说,[aaabbc]
等效于[abc]
(甚至是[cba]
)。
如果您只想捕获组https://trello.com/c/
之后的第一个路径元素,则可以使用以下模式:
https://trello\.com/c/([^/]+).*
演示:https://regex101.com/r/99FDJS/2
如果您希望模式仅与URL中的此子字符串匹配,则可以使用正向先行和后向:
(?<=https://trello\.com/c/).+?(?=/.*)
答案 1 :(得分:0)
这将与ID匹配,且没有多余的正斜杠:
import re
string = 'https://trello.com/c/iGjJLqwr/1-test-project'
match = re.search(r'[^https://trello.com/c/]\w*(?=/)', string)
print(match.group(0))
iGjJLqwr
(?=/)
断言下一个字符是正斜杠。
答案 2 :(得分:0)
在模式中,您使用的character class仅匹配几个字符中的一个。以^
开头将使其成为negated字符类,该字符类与不在字符类中的任何字符匹配。
由于字符类后面没有量词,因此此[^https://trello.com/c/]
将匹配单个i
或-
,然后\w+
将匹配一个单词字符1次以上
这将为您提供匹配iGjJLqwr
,-test
和-project
我认为您是要匹配捕获组中的ID:
^https://trello\.com/c/(\w+)
关于图案
^
声明字符串的开头https://trello\.com/c/
从字面上匹配https://trello.com/c/
(\w+)
在组1中捕获,匹配单词字符1次以上