问题在于:
有数千个正则表达式的列表。我需要获得与给定字符串匹配的正则表达式。 希望,这些正则表达式是互斥的,所以如果同时匹配多个正则表达式,我可以返回任何。
我假设大多数正则表达式以文字前缀开头,例如:。
" some_literal_string(?:\?some_regular_part)?
" →" some_literal_string
"
我想尝试以下数据结构来快速搜索:
regexes = [index=prefix_length:{key=prefix:{*prefixes}]
现在,为了找到前缀,我需要将index
从min(len(string), len(longest_prefix))
迭代到0
并提取正则表达式的子集:
subset = regexes[i][string[0:i]]
现在我需要检查每个元素是否匹配,如果找到模式,则返回它,否则,继续下一个index
。
问题是:如何在常见情况下获得正则表达式的文字前缀?
答案 0 :(得分:0)
我来到以下正则表达式:
(?:[^.^$*+?{\\[|(]|(?:\\(?:[^\dAbBdDsSwWZ]|0|[0-7]{3})))*(?![*?|]|{\d+(?:,\d*)?})
搜索后需要用匹配字符串中的符号替换反斜杠+符号:
\$
→$
需要更换八进制转义符:
\0100
→@