2017-10-19 8 views
2

正規表現は^(\\p{L}|[0-9]|_)+$#[^[:punct:][:space:]]+です(最初はJavaで、2番目はiOSで使用されています)。私はこれらを1つの式に結合して、iOSでどちらか一方と一致させたいと思っています。 最初のものはユーザー名用ですので、その先頭に@文字を追加する必要があります。どのように見えるだろうか?これらの正規表現を組み合わせる

+0

あなたはそれらの間にパイプを投げるだけですか? – sniperd

+0

私はそれをすると思いましたが、私はそうです。(^ {\\ p {L} | [0-9] | _)+ $)|(#[^ [:punct:] [:space:]]そのドル記号がiOSで動作するかどうかわからない、私はiOS内の正規表現が良くない。 '@ '記号はどこに行きますか? '^'の前に? – Tometoyou

+0

^は行の先頭を意味するので、@はその行の右側に移動します。 $はiOSでうまくいくはずです。それがうまくいけば私は完全な答えを書くでしょう:) – sniperd

答えて

1

^(\\p{L}|[0-9]|_)+$ Javaのパターンは、iOSで使用されるICUライブラリと同じです(非常に似ています)。1つ以上のUnicode文字、ASCII数字または_からなる文字列全体が一致します。交替グループが定量化され、文字クラスに基づく解決法よりもはるかに効率が低いので、これはあまり書かれていません。^[\\p{L}0-9_]+$

#[^[:punct:][:space:]]+パターンは、#と一致し、その後に句読点/記号と空白文字以外の1つ以上の文字(つまり、1つ以上の文字または数字、または英数字)が一致します。

何がシーク

@[\\p{L}0-9_]+|[^[:punct:][:space:]]+ 

または

@[\\p{L}0-9_]+|#[[:alnum:]]+ 

またはあなたがASCII数字に制限し、Unicodeの数字が一致しないようにするかのようにwritternすることができます。

@[\\p{L}0-9_]+|#[\\p{L}0-9]+ 

それは一致します

  • @から@シンボル
  • [\\p{L}0-9_]+
  • - 1以上のUnicode文字、ASCIIのdiigts、_
  • |
  • - 又は
  • #から#チャー
  • [[:alnum:]]+から1以上の文字または数字。
  • [^[:punct:][:space:]]+ - 句読点/記号と空白以外の1+文字。

これらの式はすべて基本的にmatch strings like thisです。

あなただけ[@#]\\w+@または#、その後1以上の文字、数字または_を使用するか、または唯一のASCII数字を許可するように、[@#][\\p{L}0-9_]+、フルで#SomeThing_123を一致させたい場合。

パターンの末尾に単語境界が必要な場合があります([@#][\\p{L}0-9_]+\\b)。

+0

これは非常に深いです、ありがとう!私のために働くのは、ıやöのような特殊文字を使う必要があるので、@ [\ p {L} 0-9 _] + |#[^ [:punct:] [:space:]] + 'ハッシュタグでは「_」はありません。 – Tometoyou

+0

@Tometoyou私の答えが役に立つと分かった場合は、それを上書きすることも検討してください。 –

関連する問題