【发布时间】:2016-08-30 04:08:42
【问题描述】:
我正在尝试解析类似正则表达式的字符串,格式如下:
- 唯一需要转义的字符是:
[、\和-; - 有效的字符串可以是以下序列:
- “常规字符”,例如
a,b - “转义的特殊字符”,例如
\\,\[ - 包含以上两个的序列,由一对括号括起来,例如
[abc],[a\]]
- “常规字符”,例如
例如,abc[def]g、abc\-\[[def\]]gh\\ 都是有效字符串。
有什么方法可以在每个索引处获取字符/字符类(在上面的第三种情况下)?使用纯 regex/sed 或一些 Python 库对我有用。
【问题讨论】:
-
可以得到每个索引处的字符/字符类(上面第三种情况)
-
我也对你的问题感到困惑。它似乎可以解决你所拥有的已经有效的正则表达式,所以你可以将它用作正则表达式模式并完成它,但肯定不会那么容易,所以我真的不确定你是什么真的在问。
-
对不起,我的意思是我的意思是基本上我可以得到单独的常规字符和字符组,例如
abc[def]g变为[a,b,c, [d,e,f], g]。它比常规正则表达式更棘手,因为唯一需要转义的字符是[、`,-. Therefore, if I have a string like`,它不是有效的正则表达式,而是此语法中的有效字符串。有了更多的想法,我想我会在 Python 中逐个字符地解析它。 -
本质上,如果您支持转义,则应该允许所有字符。解析时,也要解析 escape + any character。
-
@sln 是的,这就是我打算做的——所以如果我看到一个未转义的``,我会简单地解析下一个字符。
标签: python regex string sed grep