[英]What Regular Expression Can I Use To Find Simple Regular Expressions
如果我有一個字符串,它是正則表達式的來源:
"For example, I have (.*) string with (\.d+) special bits (but this is just an aside)."
有沒有辦法提取正則表達式的特殊部分?
特別是,當我調用string.match(expr);
時,我對將返回值的部分感興趣string.match(expr);
正則表達式可能很復雜,但如果使用([\\.\\\\]([*az])\\+?)
進行全局正則表達式,它將捕獲您的各個字段,而不包括您的請求的括號。 這個小提琴中的演示代碼也在下面。
var testString = 'For example, I have (.*) string with (.d+) special bits (but this is just an aside). (\\w+)';
var regex = /([\.\\]([*a-z])\+?)/gi;
var matches_array = testString.match(regex);
//Outputs the following: [".*", ".d+", "\w+"]
正則表達式不足以識別匹配括號的語言。 (形式證明使用正則表達式和有限狀態機的等價以及可能存在無限多級別嵌套的事實。)因此,匹配第一個)
之后(
將使(\\d+(\\.d+)?)
返回(\\d+(\\.d+)
並匹配最后一個)
(
將使(\\w+) (\\w+)
與整個字符串匹配。
正確的方法是使用遞歸(數學正則表達式不允許,但實際的實現,如PCRE)。 您還可以獲得非嵌套括號的簡單表達式。 只是要小心解析轉義字符:要完全健壯, \\(
和\\\\\\(
很特別,但是\\\\(
不是)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.