タグ付けされた質問 「regex」

正規表現は、文字列内のパターンに一致する宣言型言語を提供します。これらは、文字列の検証、解析、および変換に一般的に使用されます。正規表現は完全に標準化されていないため、このタグの付いたすべての質問には、適切なプログラミング言語またはツールを指定するタグも含める必要があります。注:HTML、JSONなどを要求すると、正規表現は否定的な反応を示す傾向があります。パーサーがある場合は、代わりにそれを使用してください。

5
大文字と小文字を区別しない正規表現の一部にできますか?
正規表現全体で大文字と小文字を区別しない例をたくさん見てきました。私が疑問に思っているのは、式の一部だけを大文字と小文字を区別しないようにすることです。 たとえば、次のような文字列があるとします。 fooFOOfOoFoOBARBARbarbarbAr 大文字と小文字を区別せずに「foo」のすべての出現に一致させたいが、大文字の「BAR」だけに一致させたい場合はどうなりますか? 理想的な解決策は、正規表現のフレーバー全体で機能するものですが、言語固有のものにも興味があります(Espoに感謝) 編集する Espoが提供したリンクは非常に役に立ちました。エクスプレッション内でモディファイアをオンまたはオフにすることについての良い例があります。 私の不自然な例では、次のようなことができます。 (?i)foo*(?-i)|BAR これにより、一致のfoo部分についてのみ大文字と小文字が区別されなくなります。 これは、Javascript、Python、およびその他いくつかの正規表現の実装で機能するようです(Espoによると)。 私が疑問に思っていた大きなもの(Perl、PHP、.NET)はすべて、インラインモードの変更をサポートしています。
100 regex 

4
reモジュールの正規表現は単語境界(\ b)をサポートしていますか?
正規表現についてもう少し学習しようとしているときに、チュートリアルでを使用し\bて単語の境界を一致させることができると提案されました。ただし、Pythonインタープリターの次のスニペットは期待どおりに機能しません。 >>> x = 'one two three' >>> y = re.search("\btwo\b", x) 何かが一致した場合、それは一致オブジェクトであるはずですが、そうですNone。 された\b表現は、Pythonでサポートされていないか、私はそれが間違って使用していますか?
100 python  regex 

6
文字、数字、および-_の正規表現
値が次の組み合わせのいずれかである場合、PHPでのチェックに問題があります 文字(大文字または小文字) 数字(0-9) アンダースコア(_) ダッシュ(-) ポイント(。) 場所がない!または他のキャラクター いくつかの例: OK: "screen123.css" OK: "screen-new-file.css" OK: "screen_new.js" 不可:「screen new file.css」 与えられた文字列に上記以外の文字が含まれている場合、エラーをスローする必要があるため、これには正規表現が必要だと思います。
100 regex 

12
Pythonで正規表現を使用してURLを検証するにはどうすればよいですか?
Google App Engineでアプリを構築しています。私はPythonに非常に慣れていないため、この3日間、次の問題に頭を悩ませています。 RSSフィードを表すクラスがあり、このクラスにはsetUrlというメソッドがあります。このメソッドへの入力はURLです。 re pythonモジュールを使用して、RFC 3986 Reg-ex(http://www.ietf.org/rfc/rfc3986.txt)を検証しようとしています 以下は動作するはずの省略されたものですか? p = re.compile('^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?') m = p.match(url) if m: self.url = url return url

3
どのようにしてa ^ nb ^ nをJava正規表現と一致させることができますか?
これは一連の教育的正規表現の記事の第2部です。これは、先読みとネストされた参照を使用して、非正規言語a n b nと一致させる方法を示しています。入れ子になった参照は最初に紹介されています:この正規表現はどのようにして三角形の数を見つけますか? 典型的な非正規言語の 1つは次のとおりです。 L = { an bn: n > 0 } これは、いくつかaのの後に同じ数のが続く空でないすべての文字列の言語ですb。この言語の文字列の例はab、aabb、aaabbb。 この言語は、ポンプの補題によって非規則的であることを示すことができます。これは実際には、文脈自由文法によって生成できる典型的な文脈自由言語です。 S → aSb | ab それにもかかわらず、現代の正規表現の実装は、通常の言語だけではなく、それ以上のものを明確に認識します。つまり、それらは正式な言語理論の定義では「通常」ではありません。PCREとPerlは再帰正規表現をサポートし、.NETはバランスグループ定義をサポートします。「後方参照マッチング」などの「ファンシー」機能がさらに少ないということは、正規表現が規則的でないことを意味します。 しかし、この「基本」機能はどれほど強力なのでしょうか。Lたとえば、Java regexで認識できますか?我々は、おそらく前後参照とネストされた参照を組み合わせて、例えばで動作パターン持つことができるString.matchesような文字列と一致するようにab、aabb、aaabbbなど、? 参考文献 perlfaq6:Perl正規表現を使用してバランスの取れたテキストを照合できますか? MSDN-正規表現言語要素-グループ定義のバランス pcre.org-PCREのマニュアルページ regular - expressions.info-ルックアラウンドとグループ化および後方参照 java.util.regex.Pattern リンクされた質問 ルックアラウンドは、正規表現で照合できる言語に影響しますか? .NET正規表現バランシンググループとPCRE再帰パターン

13
ドットを区切り文字として文字列を分割する
私は文字列を.正しい方法で分割しようとしているのだろうか?私のコードは: String[] fn = filename.split("."); return fn[0]; 文字列の最初の部分だけが必要なので、最初のアイテムを返します。APIで.任意の文字を意味することに気付いたので、質問しました。
99 java  regex  string  split 

5
Base64データを解析または検証するRegEx
RegExを使用してBase64データを検証またはサニタイズすることは可能ですか?それは簡単な質問ですが、この質問を駆り立てる要因はそれを困難にするものです。 私は、RFC仕様に従うために入力データに完全に依存することができないBase64デコーダーを持っています。したがって、私が直面している問題は、おそらくBase64データのように78に分割されない可能性がある問題です(78だと思います。RFCを再確認する必要があるので、正確な数値が間違っていても、私に指示しないでください)。行、または行がCRLFで終わっていない可能性があります。CRまたはLFのみの場合もあれば、どちらもない場合もあります。 そのため、このようにフォーマットされたBase64データを解析するのに時間を費やしました。これにより、次のような例では確実にデコードできなくなります。簡潔にするために、MIMEヘッダーの一部のみを表示します。 Content-Transfer-Encoding: base64 VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu わかりました、それで問題ない構文解析は、そしてまさに私たちが期待する結果です。また、99%の場合、コードを使用して、少なくともバッファー内の各文字が有効なbase64文字であることを確認すると、完全に機能します。しかし、次の例では、レンチを混ぜ合わせます。 Content-Transfer-Encoding: base64 http://www.stackoverflow.com VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu これは、一部のウイルスやその他のメールリーダーでMIMEを解析しようとする一部のウイルスやその他のもので見られたBase64エンコーディングのバージョンです。もしそうなら。 私のBase64デコーダーは、2番目の例を次のデータストリームにデコードします。ここで、元のストリームはすべてASCIIデータであることに注意してください。 [0x]86DB69FFFC30C2CB5A724A2F7AB7E5A307289951A1A5CC81A5CC81CDA5B5C1B19481054D0D 2524810985CD94D8D08199BDC8814DD1858DAD3DD995C999B1BDDC8195E1B585C1B194B8 誰もが両方の問題を一度に解決する良い方法を持っていますか?異なるルールが適用されたデータに対して2つの変換を実行し、結果を比較する以外に、それが可能かどうかさえわかりません。しかし、そのアプローチをとった場合、どの出力を信頼しますか?ASCIIヒューリスティックスが最善の解決策であるように見えますが、このコードが実際に関与しているウイルススキャナーのような複雑なものに、コード、実行時間、および複雑さがどれほど追加されるでしょうか。どのようにしてヒューリスティックエンジンをトレーニングして、許容可能なBase64とそうでないものを学習しますか? 更新: この質問が引き続き取得するビューの数に応じて、C#アプリケーションで3年間使用してきた数十万トランザクションの単純なRegExを投稿することにしました。正直、ガンボの答えが一番好きなので、それを選んだのです。しかし、C#を使用していて、少なくとも文字列またはbyte []に​​有効なBase64データが含まれているかどうかを検出するための非常に迅速な方法を探している人にとって、私は次のことがうまく機能することがわかりました。 [^-A-Za-z0-9+/=]|=[^=]|={3,}$ そして、はい、これはBase64データのSTRINGのためのものであり、適切にフォーマットされたRFC1341メッセージではありません。したがって、このタイプのデータを処理する場合は、上記のRegExを使用する前にそのことを考慮してください。Base16、Base32、Radix、またはBase64を他の目的(URL、ファイル名、XMLエンコーディングなど)で扱う場合は、Gumboが彼の回答で述べたRFC4648を読むことを強くお勧めします。この質問/回答セットの提案を使用する前に、実装で使用される文字セットとターミネータを認識してください。

5
文字列から英数字以外の文字を削除してスペースを保持するにはどうすればよいですか?
英数字以外のすべての文字を削除し、スペースは保持する正規表現を作成したいと考えています。これは、dbに到達する前に検索入力をクリーンアップするためです。ここに私がこれまで持っているものがあります: @search_query = @search_query.gsub(/[^0-9a-z]/i, '') ここでの問題は、すべてのスペースが削除されることです。スペースを保持する方法に関するソリューション?


13
文字列がhtmlかどうかを確認します
HTMLかどうかを確認する特定の文字列があります。私は同じために正規表現を使用していますが、適切な結果が得られません。 私は正規表現を検証しましたが、ここでは問題なく動作します。 var htmlRegex = new RegExp("<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)</\1>"); return htmlRegex.test(testString); ここにフィドルがありますが、正規表現はそこで実行されていません。http://jsfiddle.net/wFWtc/ 私のマシンではコードは正常に実行されますが、結果としてtrueではなくfalseが表示されます。ここで何が欠けていますか?
98 javascript  regex 

12
HTMLエンティティとしてHTMLタグをエスケープする最速の方法?
私がやっ含まChromeの拡張機能書いている多くの文字列をサニタイズ:次の仕事のがあります変換することによって、HTMLタグが含まれているが<、>と&に<、>そして&それぞれ。 (言い換えれば、PHPと同じhtmlspecialchars(str, ENT_NOQUOTES)です。二重引用符の文字を変換する必要は実際にはないと思います。) これは私がこれまでに見つけた最速の関数です: function safe_tags(str) { return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ; } しかし、一度に数千の文字列を実行しなければならない場合には、まだ大きな遅れがあります。 誰でもこれを改善できますか?それが違いを生む場合、それは主に10〜150文字の文字列用です。 (私が持っていたアイデアの1つは、大なり記号をエンコードすることではありませんでした。これには本当に危険があるのでしょうか?)

3
文字列から英数字のみを返す関数?
入力文字列を受け取り、英数字のみを残してすべての特殊文字を削除することにより、その文字列のサニタイズされたバージョンを返すphp関数を探しています。 同じことをするが、アルファベットのA〜Zだけを返す2番目の関数が必要です。 どんな助けも大歓迎です。
98 php  regex 

2
MongoDBで「Not Like」演算子を使用するにはどうすればよいですか
私は、SQLを使用することができますLikeオペレータが使用してpymongo、 db.test.find({'c':{'$regex':'ttt'}}) しかし、どうすればNot Likeオペレーターを使用できますか? 私は試した db.test.find({'c':{'$not':{'$regex':'ttt'}}) エラーが発生しました: OperationFailure:$ notは正規表現を持つことができません

6
Javascriptで正規表現の一致数を数える
テキストのチャンク内のスペース/タブ/改行の数を数える正規表現を書きたかった。だから私は単純に次のように書いた:- numSpaces : function(text) { return text.match(/\s/).length; } いくつかの不明な理由により、常に戻ります1。上記のステートメントの問題は何ですか?私はそれ以来、次の問題を解決しました:- numSpaces : function(text) { return (text.split(/\s/).length -1); }
98 javascript  regex 

10
意味のあるJavaScriptのあいまい検索
配列をフィルタリングするためのあいまい検索JavaScriptライブラリを探しています。fuzzyset.jsとfuse.jsを使用してみましたが、結果はひどいです(リンクされたページで試すことができるデモがあります)。 レーベンシュタイン距離について少し読んだ後、それはユーザーがタイプしたときに探しているものの不十分な近似として私に印象づけます。知らない人のために、システムは、2つの文字列を一致させるために必要な挿入、削除、および置換の数を計算します。 Levenshtein-Demerauモデルで修正された明らかな欠陥の1つは、blubとboobの両方が球根に等しく類似していると見なされることです(それぞれ2つの置換が必要です)。ただし、bulbはboobよりもblubに似ていることは明らかです。先ほど述べたモデルでは、転置を許可することでそれを認識しています。 これをテキスト補完のコンテキストで使用したいので、配列['international', 'splint', 'tinder']があり、クエリがintの場合、前者のスコア(higher = worse)が10であっても、splintよりもInternationalのランクが高くなるはずです。後者の対3。 だから私が探しているのは(そしてそれが存在しない場合は作成します)、次のことを行うライブラリです: さまざまなテキスト操作に重みを付ける 各操作の重み付けは、単語のどこに出現するかによって異なります(初期の操作は後の操作よりもコストがかかります)。 関連性でソートされた結果のリストを返します 誰かがこのようなものに出くわしましたか?StackOverflowがソフトウェアの推奨事項を求める場所ではないことに気づきましたが、上記の暗黙の(もうない!)は次のとおりです。これを正しい方法で考えていますか? 編集する この件に関して良い論文(pdf)を見つけました。いくつかのメモと抜粋: アフィン編集距離関数は、挿入または削除のシーケンスに比較的低いコストを割り当てます Monger-Elkan距離関数(Monge&Elkan 1996)。これは、特定のコストパラメータを持つSmith-Waterman距離関数(Durban et al。1998)のアフィンバリアントです。 ためのスミス-ウォーターマン距離(ウィキペディア)、「その代わりに全配列を見てから、スミス-ウォーターマンアルゴリズムは、すべての可能な長さのセグメントを比較し、類似性測度を最適化します。」それはn-gramアプローチです。 編集距離モデルに基づいていない、広く類似したメトリックは、Jaroメトリックです(Jaro 1995; 1989; Winkler 1999)。レコードリンケージの文献では、2つの文字列間の共通文字の数と順序に基づく、このメソッドのバリアントを使用して良好な結果が得られています。 Winkler(1999)によるこのバリアントも、最長の共通プレフィックスの長さPを使用します (主に短い文字列を対象としているようです) テキスト補完の目的で、Monger-ElkanおよびJaro-Winklerのアプローチが最も理にかなっているようです。WinklerのJaroメトリックへの追加は、単語の始まりをより重く効果的に重み付けします。また、Monger-Elkanのアフィン的側面は、単語を補完する必要性(これは単なる追加のシーケンスです)がそれほど嫌われないことを意味します。 結論: TFIDFランキングは、いくつかのトークンベースの距離メトリックの間で最もよく機能し、MongeとElkanによって提案された調整されたアフィンギャップ編集距離メトリックは、いくつかの文字列編集距離メトリックの間で最もよく機能しました。驚くほど良い距離メトリックは、Jaroによって提案され、後でWinklerによって拡張された高速ヒューリスティックスキームです。これは、Monge-Elkanスキームとほぼ同じように機能しますが、桁違いに高速です。TFIDFメソッドとJaro-Winklerを組み合わせる簡単な方法の1つは、TFIDFで使用されている正確なトークンの一致を、Jaro-Winklerスキームに基づくおおよそのトークンの一致に置き換えることです。この組み合わせは、平均でJaro-WinklerやTFIDFよりもわずかに優れており、場合によってははるかに優れています。また、このペーパーで検討されているいくつかの最良のメトリックの学習された組み合わせに近いパフォーマンスを発揮します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.