获取正则表达式模式的文字前缀

时间:2016-07-15 18:23:31

标签: python regex

问题在于:

有数千个正则表达式的列表。我需要获得与给定字符串匹配的正则表达式。 希望,这些正则表达式是互斥的,所以如果同时匹配多个正则表达式,我可以返回任何

我假设大多数正则表达式以文字前缀开头,例如:。

" some_literal_string(?:\?some_regular_part)?" →" some_literal_string"

我想尝试以下数据结构来快速搜索:

regexes = [index=prefix_length:{key=prefix:{*prefixes}]

现在,为了找到前缀,我需要将indexmin(len(string), len(longest_prefix))迭代到0并提取正则表达式的子集:

subset = regexes[i][string[0:i]]

现在我需要检查每个元素是否匹配,如果找到模式,则返回它,否则,继续下一个index

问题是:如何在常见情况下获得正则表达式的文字前缀?

1 个答案:

答案 0 :(得分:0)

我来到以下正则表达式:

(?:[^.^$*+?{\\[|(]|(?:\\(?:[^\dAbBdDsSwWZ]|0|[0-7]{3})))*(?![*?|]|{\d+(?:,\d*)?})
  • 搜索后需要用匹配字符串中的符号替换反斜杠+符号:

    \$$

  • 需要更换八进制转义符:

    \0100@

https://regex101.com/r/fF8aB9/2