[英]fixing a php tokenizing pattern
我有一個Perl腳本,可以對字符串進行標記
@s=split /([^a-zA-Z \t\-\'\,\.]+)/, $_[0]; # tokenized with separators
因此,如果我有一個字符串$s="The large [[bear]] is dangerous."
它將返回array("The large", " [[", "bear", "]] ", "is dangerous", ".")
但是當我在php腳本上使用regex模式時,它似乎不起作用。
$tokens = preg_split("/[^a-z \t\-\'\,\.]+/i", $s);
有誰知道這個問題嗎?
運行它( 演示 ):
$s="The large [[bear]] is dangerous.";
$pattern = '/([^a-zA-Z \t\-\\\'\,\.]+)/';
$tokens = preg_split($pattern, $s, NULL, PREG_SPLIT_DELIM_CAPTURE);
print_r($tokens);
輸出:
Array
(
[0] => The large
[1] => [[
[2] => bear
[3] => ]]
[4] => is dangerous.
)
細節:
\\'
被寫為\\\\\\'
。 PREG_SPLIT_DELIM_CAPTURE
標志。 編輯:要在標點符號處拆分,只需將它們從模式( Demo )中刪除:
$pattern = '/([^a-zA-Z \t]+)/';
這個:
\'
當字符串用雙引號分隔時,這是不正確的。 這將是一個實際的反斜杠,后跟一個引號字符。
還有這些:
\-\'\,\.
只需直接將它們寫成沒有反斜杠即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.