7

私は最近、編集者について同僚と話し合った。彼はあまり人気のないエディターの 1 つを使用し、私は別のエディターを使用しています (関連性がなく、エディターの炎上戦争を避けたいので、どのエディターかは言いません)。彼のエディターは正規表現での検索/置換ができないので、あまり好きではないと言っていたのです。

彼はそれをやりたいと思ったことは一度もないと言いました。しかし、私の頭の上では、1つか2つ以上の例を思いつくことができませんでした. 正規表現の検索/置換がエディターで役立つことがわかったときの例を誰かここで提供できますか? それ以来、私が実際にやらなければならなかったことの例として、私が思いつくことができたのは次のとおりです。

  1. 次のようなファイルのすべての行から行頭を取り除きます。
    Line 25634 :
    Line 632157 :

  2. ファイルごとにわずかに異なる標準ヘッダーを持つ数十個のファイルを取得し、それらすべてから最初の 19 行を一度に削除します。

  3. MySQL の select ステートメントの結果をテキスト ファイルにパイプし、書式設定のジャンクをすべて削除して、単純なスクリプトで使用する Python 辞書として再書式設定します。

  4. カンマがエスケープされていない CSV ファイルでは、各行の 8 列目の最初の文字を大文字の A に置き換えます。

  5. 次のような行を含む一連の GDB スタック トレースが与えられた場合、
    #3 0x080a6d61 in _mvl_set_req_done (req=0x82624a4, result=27158) at ../../mvl/src/mvl_serv.c:850
    各行から関数名以外のすべてを取り除きます。

他の誰かが実際の例を持っていますか? 次回これが話題になったときは、この機能が役立つ理由の良い例を挙げられるように準備を整えたいと思います.

4

10 に答える 10

2

昨日、Oracle テーブル用に作成した create table ステートメントを使用し、JDBC と PreparedStatements を使用してフィールドを setString() メソッド呼び出しに変換しました。テーブルのフィールド名はクラスのプロパティにマップされていたので、正規表現の検索と置換が最適でした。

表のテキストを作成:

...
field_1 VARCHAR2(100) NULL,
field_2 VARCHAR2(10) NULL,
field_3 NUMBER(8) NULL,
field_4 VARCHAR2(100) NULL,
....

私の正規表現検索:

/([a-z_])+ .*?,?/

私の交換:

pstmt.setString(1, \1);

結果:

...
pstmt.setString(1, field_1);
pstmt.setString(1, field_2);
pstmt.setString(1, field_3);
pstmt.setString(1, field_4);
....

次に、呼び出しごとに位置 int を手動で設定し、必要に応じてメソッドを setInt() (およびその他) に変更しましたが、それは私にとっては便利でした。実際に、同様のフィールドからメソッド呼び出しへの変換に 3 ~ 4 回使用しました。

于 2008-11-14T00:17:40.397 に答える
2

ちょうど先週、正規表現の検索/置換を使用して CSV ファイルを XML ファイルに変換しました。

各フィールドを切り刻み (幸いなことに、エスケープされたコンマはありませんでした)、コンマの代わりに適切なタグを付けてプッシュするだけです。

于 2008-09-09T13:35:49.650 に答える
2

正規表現を使用すると、単語境界を使用して単語全体を簡単に置き換えることができます。

(\b\w+\b)

そのため、 Scunthorpeのような単語を邪魔することなく、ファイル内の不要な単語を置き換えることができます

于 2008-09-09T13:41:11.540 に答える
1

誰かが列(たとえば100-200)の患者訪問番号のリストを私に送ってくるとき、私はいつもそれを使用します、そして私はそれらを「0000000444」、「000000004445」形式で必要とします。私にとっては不思議な働きをします!

また、メール内のメールアドレスを引き出すためにも使用しています。私は頻繁にグループメールを送信しますが、返送されたすべての返品は1通のメールで返されます。だから、私はそれらをすべて引き出してから、データベースから削除するために文字列varにドロップするように正規表現します。

クリップボードに正規表現を適用するための小さなダイアログプログラムも作成しました。内容を取得して正規表現を適用し、クリップボードにロードし直します。

于 2008-09-09T14:34:38.480 に答える
1

Web 開発で常に使用することの 1 つは、HTML タグの一部のテキストを削除することです。これは、セキュリティのため、またはニュース記事のプレビューを表示するために、ユーザー入力をサニタイズするために必要になる場合があります。たとえば、書式設定用の多数の HTML タグを含む記事がある場合、LEFT(article_text,100) + '...' (および「続きを読む」リンク) を実行して、次のページに表示することはできません。 HTML タグが分割されてページが壊れるリスク。

また、存在しない画像にリンクしているデータベース レコードの img タグを削除する必要がありました。そして、Web フォームの検証を忘れないでください。ユーザーが (構文的に) 正しいメール アドレスを Web フォームに入力したことを確認したい場合、これが完全にチェックする唯一の方法です。

于 2008-11-14T00:05:07.550 に答える
1

長い文字シーケンスを文字列リテラルに貼り付けましたが、それを短い文字列リテラルの連結に分割して、ラップしないようにしたいと考えています。また、読みやすくしたいので、スペースの後でのみ改行したいです。文字列全体 (引用符を除く) を選択し、次の正規表現を使用して、選択範囲内のみをすべて置換します。

/.{20,60} /

...そしてこの置換:

/$0"¶         + "/

...ピルクロウは実際の改行であり、スペースの数はインシデントごとに異なります。結果:

String s = "I recently discussed editors with a co-worker. He uses one "
         + "of the less popular editors and I use another (I won't say "
         + "which ones since it's not relevant and I want to avoid an "
         + "editor flame war). I was saying that I didn't like his "
         + "editor as much because it doesn't let you do find/replace "
         + "with regular expressions.";
于 2009-09-03T17:37:19.750 に答える
1

私は正規表現を使って、次のように項目のリストを再フォーマットするのが好きです:

int item1
double item2

public void item1(int item1){
}
public void item2(double item2){
}

これにより、時間を大幅に節約できます。

于 2008-09-09T13:45:21.547 に答える
0

正規表現は、複数の行にまたがる値を置き換えようとするときはいつでも非常に便利です。または、値を改行を含むものに置き換えたい場合。

また、$# 構文を使用して完全な一致を置き換えずに、正規表現で一致させて、維持したい一致の部分を出力できることも気に入っています。

于 2008-09-12T18:57:31.910 に答える
0

ポイント3、4、および5については同意しますが、ポイント1および2については必ずしも同意しません。

場合によっては、匿名キーボード マクロを使用すると、 12の方が簡単に実現できます。

これは、次のことを意味します。

  1. 最初の行にカーソルを置きます
  2. キーボード マクロの記録を開始する
  3. 最初の行を変更する
  4. 次の行にカーソルを置きます
  5. 記録を停止します。

次の行を変更するために必要なのは、マクロを繰り返すことだけです。

正規表現のサポートがなくても生活できましたが、匿名のキーボード マクロなしでは生活できませんでした。

于 2008-09-18T01:57:04.530 に答える
0

私がエディターを使って最初に行うことは、それが正規表現の奇妙さを理解しようとすることです。いつも使っています。特におかしなことは何もありませんが、異なるタイプのテキスト間で何かをコピー/ペーストする必要がある場合に便利です - SQL <-> PHP は私が最も頻繁に行うものです - そして、同じ変更を行うのをおならしたくない 500回。

于 2008-09-09T13:46:39.437 に答える