regex 括弧 良い正規表現とは何ですか?




正規表現 括弧 意味 (8)

私は5年間、主にOracleデータベースにアクセスするJavaデスクトップアプリケーションで作業しましたが、正規表現は一度も使用していません。 今私はスタックオーバーフローに入ると私はそれらについて多くの質問を参照してください。 私は何かを逃したように感じる。

正規表現は何のために使うのですか?

PS私の悪い英語のために申し訳ありません


強力なパスワードの検証

これは、英数字5〜10文字の英数字で、少なくとも1つの大文字、1つの小文字、1つの桁のパスワードを検証します。

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$

最もクールな正規表現:

/^1?$|^(11+?)\1+$/

数値がプライムであるかどうかをテストします。 そしてそれは動作します!

注:それを機能させるためには、少しセットアップが必要です。 テストする数値を最初に " 1 "の文字列に変換しなければならない場合、文字列に " 1 "の素数が含まれていないかどうかテストするために式を適用できます。

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

Avinash Meetooのブログには、非常にわかりやすい説明があります。


Rubyの例を考えてみましょう:

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

"/ \ d {3} - \ d {4} /"は正規表現であり、わかるように、文字列内の一致を見つけるための非常に簡潔な方法です。

さらに、グループを使用すると、次のように情報を抽出できます。

match = /([^@]*)@(.*)/.match("[email protected]")
name = match[1]
domain = match[2]

ここでは、正規表現のカッコがキャプチャグループをマークしているので、マッチングしたデータが正確にわかるので、さらに処理することができます。

これはちょうど氷山の一角です...テキストを本当に処理しやすくする正規表現でできることはたくさんあります。


これらのREはVisual StudioとC ++に固有のものですが、私はそれらが時々役に立ちます:

渡されたデフォルト以外のパラメータを持つ "routineName"のすべての一致を検索:

ルーチン名\(:a + \)

逆に、「routineName」のすべての出現をデフォルトのみで見つけるには: routineName \(\)

デバッグビルドでコードを有効(または無効)にするには:

\ #if。 _デバッグ*

これはすべてのバリアントを捕捉することに注意してください:ifdef、ifndef、if !def



ご存じのとおり、Oracleは現在、正規表現を使用しています。http : //www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html 私はいくつかのクエリで新しい機能を使用しましたが、それは他のコンテキストほど有用ではありませんでした。 その理由は、正規表現が構造化されていないデータに埋め込まれた構造化データを見つけるのに最適であるということです。

たとえば、正規表現を使用して、ログファイルに詰め込まれたOracleメッセージを見つけることができます。 メッセージがどこにあるかを知ることはできません。 だから、正規表現はその問題に対する最良の解決策です。 リレーショナルデータベースで作業する場合、データは通常事前構造化されているため、正規表現はそのコンテキストでは輝きません。


正規表現(または正規表現)は、文字列のパターンマッチングに使用されます。 したがって、特定のパターンに従うので、テキストからすべての電子メールアドレスを取り出すことができます。

場合によっては、正規表現は前方スラッシュで囲まれ、2番目のスラッシュの後には大文字小文字を区別しないなどのオプションが置かれます。 ここには良いことがあります:)

/(bb|[^b]{2})/i

"2 be be or not 2 be"と読むことができます。

最初の部分は(角かっこ)で、パイプで分割されています。 (a | b)は "a"または "b"と一致します。 パイプ領域の前半は「bb」と一致します。 後半の名前はわかりませんが、それは角括弧で、 "b"以外のものと一致します。そのため、そこには屋根のシンボルがあります(技術用語)。 括弧で囲まれた括弧は、それらの前のものの数と一致します。この場合、「b」ではない2つの文字です。

2番目の/の後は "i"で、大文字と小文字を区別しません。 開始スラッシュと終了スラッシュの使用は環境によって異なります。

私はあなたがこれに便利だと思う2つのリンクです

  1. regular-expressions.info
  2. ウィキペディア - 正規表現

正規表現(略してregexまたはregexp)は、検索パターンを記述するための特別なテキスト文字列です。 正規表現はステロイドでワイルドカードと考えることができます。 *.txtなどのワイルドカード表記は、ファイルマネージャのすべてのテキストファイルを見つけるのに慣れているはずです。 正規表現は.*\.txt$です。

正規表現のための素晴らしいリソース: http : //www.regular-expressions.info





regex