我想構建一個解析器,能夠使用正則表達式提取數據。使用可選的反向引用來捕獲字符串可選的引號括起來
我希望能夠匹配
這是我現在所擁有的:
(\w+)\s+('|")([^\2\\]*(\\.[^\2\\]*)*)\2\s*;
的([^\2\\]*(\\.[^\2\\]*)*)
部分從http://ad.hominem.org/log/2005/05/quoted_strings.php
採取不幸的是,我有兩個問題,這種模式。
首先,我希望能夠捕獲不包含單/雙引號的字符串。
有print "hello world";
作品,但print foobar;
不起作用。最後,我還沒有能夠使反向引用\2
可選。此外,我不知道是否只是我附上正則表達式的方式,但我似乎無法解析此模式的多個實例。
如果我嘗試使用print 'hello'; print 'foobar';
的正則表達式,它只會返回第一個print 'hello';
部分。
在此先感謝您的幫助。
編輯
這裏是什麼,我試圖解析一個片段:
listen 80;
server_name domain.com *.domain.com;
rewrite^ http://www.domain.com$request_uri? permanent;
我想捕捉它們的參數的每一個動作。基本上我wan't能夠解析NGINX配置文件:http://wiki.nginx.org/FullExample
你想匹配什麼? – Halcyon
你的目標是解析一個PHP字符串嗎? –
這是一個瘋狂的猜測,但是你不能只是把'('|「)'改成'('|」|)'? – Halcyon