从此字符串中获取"Testing if \"quotes\" are working."
:
msgid "Testing if \"quotes\" are working."
,
我正在使用这种模式:
~msgid(?:\s*)(\"[^\"](?:\\.|[^\"])*\")~m
但是,如果我有msgid ""
即使字符串为空,我怎样才能提取字符串?
答案 0 :(得分:4)
这是因为构造#include <stdio.h>
#import <Foundation/Foundation.h>
总是至少需要一个字符,当字符串为空时它不会找到。一个简单的解决方案是将其设为可选(添加[]
):
?
答案 1 :(得分:1)
您可以进一步使用此efficient technique来减少回溯。
msgid\s*("(?:[^\\"]*\\.)*[^\\"]*")
(如果双引号内没有任何内容,这也会匹配)
根据您使用模式的方式,可能需要进一步转义反斜杠,例如PHP:
$re = '/msgid\s*("(?:[^\\\"]*\\\.)*[^\\\"]*")/';