-2

XML ファイルから 120,000 個の動的 URL を消去する必要があります。「?」を探す正規表現を書くにはどうすればよいですか?行の文字を削除してから、その行を削除します(またはスペースに置き換えます)

削除する必要がある行の例:

<url>http://www.website.com/order/index.asp?type=something%20something&DisplayName=N&Material=blah</url>
4

5 に答える 5

1

正規表現は次のようになります。

<url>.*?\?.*?<\/url>

そして、たとえば C# で置き換えたい場合は、次のようにします。

  String sourcestring = "BlahBlahBlah\n<url>http://www.website.com/order/index.asp?type=something%20something&DisplayName=N&Material=blah</url>\nBlah?BlahB?lah\nBlahBla?hBlah\n<url>http://www.website.com/order/index.asp?type=something%20somethi\nng&DisplayName=N&Material=blah</url>\nBlahBlahBlah";
  String matchpattern = @"<url>.*?\?.*?<\/url>";
  String replacementpattern = @"";
  Console.WriteLine(Regex.Replace(sourcestring,matchpattern,replacementpattern,RegexOptions.Multiline | RegexOptions.Singleline));

これにより、サンプル テキストに示されているように、URL タグが次の行に割り込んでもスペースに置き換えられることに注意してください。

置換前のサンプル テキスト:

  • 何とか何とか何とか
  • <url>http://www.website.com/order/index.asp?type=something%20something&DisplayName=N&Material=何とか</url>
  • 何とか何とか何とか
  • 何とか何とか何とか
  • <url>http://www.website.com/order/index.asp?type=something%20somethi
  • ng&DisplayName=N&Material=何とか</url>

置換後の結果テキスト:

何とか何とか何とか

Blah?BlahB?lah BlahBla?hBlah

何とか何とか何とか


更新:
Notepad++ を使用している場合は、[検索/置換] ダイアログで [一致する改行.] チェックボックスをオンにする必要があります (正規表現では CR/LF.

別の方法として、Ωmega の正規表現を使用することもできます。これは、そのクラスの文字を除くすべてに一致するためです。<url>[^<?]*\?[^<]*<\/url>

于 2012-09-06T20:53:27.627 に答える
0

単純なgsubルビーでそれを行うでしょう。たとえば、スペースの代わりに疑問符を使用するには、次のようにします。

string_containing_urls = "<url>http://example.com?sdfhkldj</url>\n<url>http://example.com</url>"
string_containing_urls.gsub(/\?/, ' ') # => "<url>http://example.com sdfhkldj</url>\n<url>http://example.com</url>"

タグ間のURLをスペースに置き換えたい場合は<url> ... </url>、次を使用できます。

string_containing_urls = "<url>http://example.com?sdfhkldj</url>\n<url>http://example.com</url>"
string_containing_urls.gsub(/<url>.*\?.*<\/url>/, ' ') # => " \n<url>http://example.com</url>"

次のようにすると、行全体が削除されます

string_containing_urls = "<url>http://example.com?sdfhkldj</url>\n<url>http://example.com</url>"
string_containing_urls.gsub(/<url>.*\?.*<\/url>\n/, '') # => "<url>http://example.com</url>"

同様の置換関数は、他のほとんどの言語でも使用できます。

于 2012-09-06T20:33:24.327 に答える
0

<url>[^<?]*\?[^<]*<\/url>空の文字列に置き換えます

于 2012-09-06T20:37:52.833 に答える