特定のタグ/テキストの前のコンテンツを削除するにはどうすればよいですか。たとえば、このコメントの前のすべてを削除したい:
<!-- article begins -->
その後、すべてを削除したい
<!-- article ends -->
特定のタグ/テキストの前のコンテンツを削除するにはどうすればよいですか。たとえば、このコメントの前のすべてを削除したい:
<!-- article begins -->
その後、すべてを削除したい
<!-- article ends -->
C# (正規表現は必要ありません)。
string start = "<!-- article begins -->";
string end = "<!-- article ends -->";
var article = text.Split(new string[] { start, end },
StringSplitOptions.RemoveEmptyEntries)[1];
Python の例 (どの言語が必要かはわかりませんでした):
import re
reobj = re.compile(".*?<!-- article begins -->(.*)<!-- article ends -->.*", re.DOTALL)
result = reobj.sub(r"\1", subject)
これにより、タグも削除されます。article begins/ends
また、 にはペアが1 つしかないことを前提としていsubject
ます。
とsed
:
sed -n '/<!-- article begins -->/,/<!-- article ends -->/p' yourfile
一致するタグのペアが 1 つしかないとは限りません。
正規表現エンジンによって異なります。ほとんどの場合、「.」と尋ねられるモードがあります。改行を含むすべての文字に一致します。次に、必要なものをキャプチャします。
.*article begins.....(.*).....article ends.*
コメント マーカーにはドットを使用しています。これらの文字の一部は、正規表現エンジンによっては特殊なためです。
代わりに awk を見るかもしれませんが、これを行うためのより良い方法があります。
awk '/article begins/,/article ends/ { print }' filename
アクションで正規表現の範囲を指定します。
/start pattern/,/end pattern/ { action to do }