之間的符號我有它包含了英語和非英語字符的字符串,並且都包含它們之間的underscore symbol _
。正則表達式:如何替換非英語字符串,但不是英語一個
我想刪除只從非英語字符串下劃線,離開強調,只有英文字符之間。
例子:Hello_this是我,مرحبا_اناهنا
謝謝!
之間的符號我有它包含了英語和非英語字符的字符串,並且都包含它們之間的underscore symbol _
。正則表達式:如何替換非英語字符串,但不是英語一個
我想刪除只從非英語字符串下劃線,離開強調,只有英文字符之間。
例子:Hello_this是我,مرحبا_اناهنا
謝謝!
這可能的preg_replace工作:
preg_replace('/(?<=[^\x00-\x80])_(?=[^\x00-\x80])/', '', $str);
沒有工作。任何方式你可以解決這個問題?/[_ \ W] * /我試圖刪除英文字母和下劃線之間的所有字母。 '前:Hello_this是我',مرحبا_اناهنا'會導致:hello_this是我' – Sobiaholic
它的工作。看到這個演示:http://ideone.com/LC8wGy – anubhava
謝謝,我想我錯了!你怎樣才能刪除所有的非英文字母及其下劃線? – Sobiaholic
這應該做你想要什麼:
preg_replace('/(?<=\p{Arabic})_(?=\p{Arabic})/', '', $s)
你可以試試這個:
<meta charset="UTF-8"/>
<pre><?php
$subject = "Hello_this is me , مرحبا_اناهنا";
$pattern = '~\p{Arabic}\K_(?=\p{Arabic})~u';
echo $subject . '<br/>' . preg_replace($pattern, ' ', $subject);
請注意,我使用u修飾符來處理unicode字符串。
的\K
之前重置了比賽,但你可以通過回顧後作爲代替anubhava這一招和CTN表明它。
會盡快,我回去試試。謝謝 – Sobiaholic
你嘗試過什麼?如何強調在他們旁邊的字符串有空格或結尾?或數字?或者它旁邊總是會有兩個ASCII或兩個非ASCII字符? –