2016-07-31 2 views
-4

私はUTF8のテキストをレンダリングし、#で開始し、spaceまたはenterまたは任意の区切りなど\r\t\nで終わったすべてのタグをリンクしたい入力します。正規表現は、すべてのutf8テキストを検索スペースで#と終わりで開始または

テキスト例:

Текстовые теги #общий #тест 
Хиджаб в исламе, философии безопасности #женщин 
english #teg #test 
+0

正確にあなたが何を意味するか、たとえば、あなたはそれらの\ P {} here
で行い、それらで遊ぶことができるかを見てお勧めセパレータ "? – melpomene

+1

どのようなプログラミング言語を使用していますか? – melpomene

+0

私はPHPプログラミング言語を使用しています。 – ingenious

答えて

2

私はあなたにも、そして、この通常のASCII文字

を有するものを取得したいと仮定します。

<?php 
$description = 'Текстовые теги #общий #тест 
Хиджаб в исламе, философии безопасности #женщин 
english #teg #test'; 

preg_match_all('/(?<=#)\w+(?=\s|$)/u',$description,$matches,PREG_PATTERN_ORDER); 

var_dump($matches); 

あなたの配列となるだろう。 "общий","тест","женщин","teg","test"

u修飾子は、\ wもUnicode単語文字を取り込むようにします。
\ wは、[\p{L}\p{N}_]:英字、数字またはアンダースコアに相当します。

(?<=#)は\ wの前にいることはRegex告げる+#

(?=\s|$)は\ wの+の後に目に見えない文字があることが必要であることを正規表現を伝える肯定先読みであることが必要である正の後読みです(\ sは[\p{Z}\h\v]と同じです)。
または$の行の末尾に(testの後ろに\を付けないでください)。

しかし、その肯定的な先取りを削除することができます。例えば#общий!が一致してはならないため、空白が続く必要がある場合を除きます。あなたはそれをより具体的にする必要がある場合

、私は「あなたがhere

関連する問題