sedを使用してこの正規表現を空の正規表現に置き換える方法

sedを使用してこの正規表現を空の正規表現に置き換える方法

パフォーマンス上の理由から、sedを使用してファイルの一部のテキストを置き換える必要がありますが、正しく機能しません。以下は置換する検索クエリです(C#の場合)。

<oTimer.*?/>

まず、脱出できないようです。 /正しく二重バックスラッシュで一重引用符を使用しています。

<oTimer.*?\\/>

それからそれを空の文字列に置き換える方法の問題に遭遇しました。

sed 's/<oTimer.*?\\/g>

これをしないようです。

ベストアンサー1

  • <oTimer.*?/>正規表現の場合<oTimer/>something else <anothertag?>でも一致します。これが欲しいのか?たぶんあなたはHTMLパーサーを探していますか?

  • 疑問符は確実ですか?基本正規表現には特別な意味がないため、パターンは(unusual)で終わる必要があります。?/>

  • スラッシュをエスケープするにはバックスラッシュが必要ですが、この場合はsコマンドとは異なる区切り文字を使用して読みやすくなります(1つを自由に選択できます!)。s_regex_replacement with /_

  • 空の文字列に置き換えるには、3番目の区切り文字が必要です(2番目と3番目の区切り文字が代替文字列を囲むので、空の置換の場合には何もない2つの区切り文字があります)。

  • 全体的に、私はあなたが次のようなものを探していると思います。sed 's_<oTimer[^>]*/>__g'

おすすめ記事