REGEX:在PHP中匹配DOUBLE BACKSLASH所需的特定帮助

时间:2014-06-25 10:35:27

标签: php regex escaping

我遇到了将双反斜杠模式与preg_match函数匹配的问题。我理解为了字面上匹配反斜杠,你需要使用4(\\\\)来匹配单个斜杠。我假设为了匹配一个文字的双斜线,即\\t将是(\\\\\\\\t)?

虽然我的字符串中似乎没有识别出这种模式?

这是我到目前为止所得到的......

preg_match("/\"&?$string:?(\\\\\\\\t)?\".{1,7}$lang=\"&?(.*?):?\"/smi",$cont,$matches);

进一步解释:

我需要它来匹配以下内容......

"Unlock\\t Automatically ar="فتح\\t تحديث"

"&Unlock Automatically   ar="فتح\\t تحديث"

"&Unlock: Automatically  ar="فتح\\t تحديث"

"&Unlock:Something\\t Automatically   ar="فتح\\t تحديث"

它正确匹配带符号和冒号的字符串,但不匹配斜杠?

每个人都有什么想法?

1 个答案:

答案 0 :(得分:0)

一个反斜杠'\'用于转义下一个符号。因此,要捕获单个反斜杠,您需要'\\'。要获得双倍,您需要'\\\\'

preg_match('/(\\\\)/i', 'فتح\\t تحديث', $result);
$result = Array
(
    [0] => \\
    [1] => \\
)

你也有一个'在那里,由于不同的原因,它在字符串中自行逃逸。所以要抓住一个人:

preg_match('/(\\\\t)/i', 'فتح\\t تحديث', $result);
$result = Array
(
    [0] => \\t
    [1] => \\t
)

应该足以让你前进。如果您需要任何进一步的帮助,请与我们联系。

P.S。 这是一个用PHP测试RegEx的优秀工具(PCRE RegEx) - http://regex.larsolavtorvik.com/