XML ファイルから 120,000 個の動的 URL を消去する必要があります。「?」を探す正規表現を書くにはどうすればよいですか?行の文字を削除してから、その行を削除します(またはスペースに置き換えます)
削除する必要がある行の例:
<url>http://www.website.com/order/index.asp?type=something%20something&DisplayName=N&Material=blah</url>
正規表現は次のようになります。
<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 タグが次の行に割り込んでもスペースに置き換えられることに注意してください。
置換前のサンプル テキスト:
置換後の結果テキスト:
何とか何とか何とか
Blah?BlahB?lah BlahBla?hBlah
何とか何とか何とか
更新:
Notepad++ を使用している場合は、[検索/置換] ダイアログで [一致する改行.
] チェックボックスをオンにする必要があります (正規表現では CR/LF.
別の方法として、Ωmega の正規表現を使用することもできます。これは、そのクラスの文字を除くすべてに一致するためです。<url>[^<?]*\?[^<]*<\/url>
単純な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>"
同様の置換関数は、他のほとんどの言語でも使用できます。
<url>[^<?]*\?[^<]*<\/url>
空の文字列に置き換えます