問題タブ [non-greedy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - 非貪欲な grep の動作を変更する必要があります
クライアントのブログに挿入された大量のスパムを一掃しようとしています。問題の 1 つは、最初にインジェクションを行ったハックが、実際には不正な形式の複数埋め込みリンクを作成する方法でインジェクションを行ったため、それらを簡潔に把握するのに苦労していることです。
私が考えたのは、投稿テーブル内のすべてのリンクをテキスト ファイルにダンプし、そのリストから有効なものを削除し、そこから悪意のあるリンクを一度に 1 行ずつ削除する bash スクリプトを作成することでした。貪欲でないgrepを使用してリンクをダンプしようとしていました。そうしないと、投稿に複数のリンクがある場合、最初のリンクの最初から最後のリンクの終わりまで移動します。これは私が使用していた行です:
この問題は、他のリンク内に埋め込まれたリンクを解析しようとしたときに発生しています。たとえば、次のようになります。
このようなセクションから:
ただし、すべてのリンクがこのように壊れているわけではありません。上記のコマンドから出力されたものを一掃すると、がれきを追跡するのが非常に難しくなると思います. 私が必要だと思うのは、ブロック全体をつかむもの(つまり、開始<a href
と同じ数の終了を一致させる</a>
)、または可能な限り最小の内側の一致(つまり、内側から貪欲)のいずれかであり、複数のパスでそれを行います、しかし、他の提案も受け付けています。これについて何か考えはありますか?ありがとう!
python - xmlをきれいにするためのPythonの貪欲でない正規表現
不要な文字が含まれる「xml ファイル」ファイルがあります
次の貪欲ではない置換により、適切に囲まれていない文字が削除されると思いました<sometag></sometag>
この正規表現は、で示されている位置のみを見つけるよう[[]]
です</tag>[[]]<tagTwo>
何が間違っていますか?
編集: この質問の動機は解決されました(コメントを参照してください。xmlファイルに迷子の & があり、解析されない原因となっていました-削除したい文字とは何の関係もありませんでした)。ただし、正規表現が可能かどうか(および私の試みの何が問題だったのか)についてはまだ興味があるので、質問を削除しません。
regex - Scala RegexParsers での貪欲でないマッチング
Scala で初歩的な SQL パーサーを作成しているとします。私は次のものを持っています:
selectstatement を に対して一致させようとするとき、 inSELECT foo FROM bar
のために selectclause がフレーズ全体を飲み込んでしまうのを防ぐにはどうすればよいですか? rep(token)
~ tokens
言い換えれば、Scala で非貪欲なマッチングを指定するにはどうすればよいでしょうか?
明確にするために、標準の非貪欲な構文 (*?) または (+?) を文字列パターン自体で使用できることを十分に認識していますが、def トークン内のより高いレベルでそれを指定する方法があるかどうか疑問に思いました。たとえば、次のようにトークンを定義したとします。
次に、def トークン内の rep(token) に対して貪欲でないマッチングを指定するにはどうすればよいですか?
regex - Perl 正規表現を貪欲でないようにすることはできません
私の正規表現は、私が何をしても、行の最後のアルファベット文字セットと一致します。最初の出現のみに一致させたい。
貪欲でない演算子を使用してみましたが、それは頑固に右端のアルファ文字セットに一致します。この場合、$1 に値「Trig」を与えますが、これは私が望むものではありません。$1 を「02.04.07.06 Geerite」にしたい。
コード
ソース
02.04.07.06 Geerite Cu8S5 R 3m、R 3m、または R 32 Trig
出力
NT2 32 トリガー | | |
つまり、次の出力が必要です。
NT2 02.04.07.06 ゲーライト | | |
java - Javaでの貪欲でない正規表現
次のコードがあります:
そして次の出力があります:
しかし、私の意見では、それは次のようになります。
なぜそうなのか説明してください。
python - 重みと最小値を使用して整数を配布しますか?
同様の質問で、重みを使用して整数を分散する方法を尋ねました。各分布の「バケット」に最小値が課された場合、この問題にどのようにアプローチするのか興味があります。最小値を課すことにより、これははるかに難しい問題のように思われます。これが私の貪欲な試みですが、うまくいきません:
現在、値は[7、5、4]として配布されます。これは、配布する必要があるよりも6多い16です。出力は[1、5、4]である必要があります。これは、すべての列の最小要件を満たしているためです。分布しなければならない値が大きくなるにつれて、分布は正しい加重分布にますます近づくはずです。たとえば、1000を分散することにより、アルゴリズムは値を[714、143、143]として正しく分散します。
As a side note, my purpose is to distribute available space (width) among several columns. All columns have a minimum size needed to "get by" and display at least some of their data, and some columns are more in need of space as the available space grows. I mention this as one real life use for this algorithm, but I don't want this to be a discussion of GUI design.
What are some solutions to this problem? The simpler the better.
python - dotall で貪欲でない正規表現を使用できますか?
dotall と non-greedy を一致させたいと思います。これは私が持っているものです:
ただし、これは非貪欲ではありません。このデータは、私が期待したように一致しません:
理由がわかりません。
上記の正規表現で私が述べていると思うことは次のとおりです。
「img」で始まり、改行を含む 0 個以上の任意の文字を許可し、少なくとも 1 つの「onmouseover」を探し、改行を含む 0 個以上の任意の文字を許可し、次に「a」
これが期待どおりに機能しないのはなぜですか?
キーポイント: dotall を有効にする必要があります
ruby - Rubyの貪欲でない正規表現:ptyとexpect
私はRubyのptyを試すために少しテストをしていましたが、正しく理解できません。主な問題は、正規表現が欲張りでないことだと思います。
これは呼ばれるプログラムinputs.rb
です:
そしてこれは呼ばれるプログラムtest.rb
です:
残念ながら、出力を印刷すると、次のようになります。
The whole output is ||||
password1234
Thank you! Your password is: p||||
output1 = |
|
output1 = |password1234
|
output1 = |Thank you! Your password is: p|
なぜではない
Thank you! Your password is: p||||
の
Thank you! Your password is: password1234||||
ですか?
これは正常ですか?その場合:この動作を変更する方法はありますか?
私が試したこと:
- rubularの正規表現:動作します。
- コメントされたすべての選択肢:どれも機能しません(完全なパスワードを取得してください)。
- http://www.42klines.com/2010/08/14/what-to-expect-from-the-ruby-expect-library.html
Rubyバージョン:1.8.7
Ubuntu:10.04(Lucid Lynx)
私はあなたが持っているかもしれないどんな考えにも感謝します。どうもありがとうございます。
regex - Perl regex 置換の最後の出現
私はこの入力を持っています:
文字列で終わるものをすべて削除したいと思いGXXXXVXX
ます。
このコードを使用する場合:
結果は次のとおりです。
正規表現が見つけるたびに、".G"
それが空白で削除されるようです。理解できない。
これが欲しい:
どうすれば正規表現でこれを行うことができますか?
regex - 非貪欲に一致する正規表現を作成するにはどうすればよいですか?
非貪欲なオプションを使用した正規表現の一致について助けが必要です。
一致パターンは次のとおりです。
一致するテキストは次のとおりです。
http://regexpal.comでテストします
<img
この式は、 fromから lastまでのすべてのテキストに一致します>
。>
initial の後に最初に遭遇したものと一致させる<img
必要があるため、ここでは、取得したものではなく 2 つの一致を取得する必要があります。
non-greedy?
のすべての組み合わせを試しましたが、成功しませんでした。