1

まず、正規表現のクリーニングに EditPadPro を使用しているため、与えられた回答はその環境内で機能するはずです。

毎日クリーンアップしなければならないデータでいっぱいの大きなスプレッドシートを取得します。私が実行しているいくつかの異なる正規表現にそれをまとめることができましたが、これはうまくいきます...しかし、単一の正規表現に減らすことができるかどうかを知りたいです。

サンプルデータは次のとおりです。

3-CPC_114851_70095_70095_CAN-bre
3-CPC_114851_70095_70095_CAN
b11-ao1-113775-bre
b7-ao-114441
b7-ao-114441-bre
b7-ao1-114441
b7-ao1-114441-bre
http://go.nlvid.com/results1/?http://bo
go.nlv/results1/?click
b4-sm-1359
b6-sm-1356-bre
1359_195_1453814569-bre
1356_104_1456856729
b15-rad-8905
b15-rad-8905-bre

上記のデータは次のようになります。

114851-bre
114851
113775-bre
114441
114441-bre
114441
114441-bre
http://go.nlvid.com/results1/
go.nlv/results1/
sm-1359
sm-1356-bre
sm-1359-bre
sm-1356
rad-8905
rad-8905-bre

したがって、次のような多数のルールがあります。

  • アンダースコアが 3 つ以上の場合、結果には最初のアンダースコアの直後の値とダッシュ以降のすべての値のみが含まれる必要があります。
  • 文字列に「-ao-」、「-ao1-」が含まれる場合、最後の数値文字列より前のすべてを削除する必要があります。
  • 疑問符がある場合は、それ以降のすべてを削除する必要があります。
  • 文字列に「-sm-」または「-rad-」が含まれている場合、それらのアルファベット文字列より前のすべてを削除する必要があります。
  • 文字列に 2 つのアンダースコアが含まれている場合、最初の数値文字列の後のダッシュ (存在する場合) までのすべてを削除し、文字列 "sm-" を先頭に追加する必要があります。

さらに、手つかずのままにしておかなければならないその他のデータがあります。

113535|24905|24905

xxxxxx|yyyyy|zzzzz のこのパターンの多くのバリエーション (および必ずしもこれらの文字列の長さではありません)

これは正規表現を求めすぎている可能性があります。私はそれが得意ではないのでわかりません。しかし、私はそれを使ってかなり印象的なことが行われたのを見たので、これをコミュニティに公開して、あなたが何を返すか見てみようと思いました.

4

2 に答える 2

1

これを試して:

  1. 検索パネルを切り替える :SHIFT+CTRL+F
  2. 探す:.*?((?:sm-|rad-)?(?:(?:\d+|[\w\.]+\/.*?))(?:-\w+)?$)
  3. 交換:$1
  4. チェックREGEXしてWORDS
  5. クリックReplace AllまたはヒットCTRL+ALT+F3

以下の画像を確認してください。

EditPad 検索と置換

于 2014-04-24T19:17:33.510 に答える