32

だから私は次のような大きなテキストファイルを持っています:

<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D

それは数百行の長さであり、手動で行いたくありません。私が使おうとしている表現は次のとおりです。

<option value='.{1,}' >

いくつかのオンライン正規表現テスターで実行すると、意図したとおりに機能します。私は基本的に、A、B、C などの前にあるものをすべて削除したいと考えています。問題は、Vim と Notepad++ でその式を使用しようとすると、何も見つからないように見えることです。

4

16 に答える 16

63

Notepad++ では、これに正規表現を使用する必要はありません。

Alt キーを押したままにすると、複数の行にまたがるテキストの四角形を一度に選択できます。削除したいチャンクを選択し、delete を押します。

于 2010-11-16T17:20:30.803 に答える
30

メモ帳++で:

<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D


Find what: (.*)(>)(.)
Replace with: \3

Replace All


A
B
C
D
于 2009-01-07T20:07:02.687 に答える
20

ABCなどの前のすべて。

それはとても単純に思えますが、私はあなたを誤解しているに違いありません。それはただ

:%s/<.*>//
于 2008-11-13T17:25:14.177 に答える
8

私が問題を理解していない限り、これには非常に簡単な解決策があります。次の正規表現:

(.*)(>)(.*)

投稿で指定されたパターンに一致します。

したがって、notepad ++では、それを見つけて。(.*)(>)(.*)に置き換えます\3

正規表現は基本的に貪欲であり、指定(.*)すると行全体に一致し、保持したい文字列を抽出できるように、なんらかの方法で正規表現を分解する必要があります。ここで、私はまったく同じことをしました、そしてそれはNotepad++とEditplus3でうまく働きます。

于 2008-11-13T17:01:21.183 に答える
7

元のソリューションには 2 つの問題があります。まず、あなたの例のテキスト:

<option value value='1' >A

「値」という単語が 2 回出現します。あなたの正規表現はそうではありません。また、正規表現の量指定子で左中かっこをエスケープする必要があります。そうしないと、Vim がそれをリテラル中かっことして解釈します。この正規表現は機能します:

:%s/<option value value='.\{1,}' >//g
于 2008-11-13T16:43:27.537 に答える
6

これにより、タグが削除optionされ、文字がvimに残ります。

:%s/<option.*>//g
于 2008-11-13T16:29:50.590 に答える
4

In notepad++

Search

(<option value="\w\w">)\w+">(.+)

Replace with

\1\2
于 2011-03-29T09:48:01.807 に答える
4

あまり具体的でない場合に役立つ場合があります。あなたの表現は「貪欲」です。これは、プログラムによって異なる方法で解釈される可能性があります。これをvimで試してください:

%s/^<[^>]+>//
于 2008-11-13T16:30:24.100 に答える
3

vimで

:%s/<option value='.\{1,}' >//

また

:%s/<option value='.\+' >//

vimの正規表現では、1つ以上の記号をエスケープして、括弧、制限された数の中括弧などをキャプチャする必要があります。

:help /magicどの特殊文字をエスケープする必要があるか(およびそれを変更する方法)を確認してください。

于 2008-11-13T17:01:38.810 に答える
2

同じ問題 (jQuery の " done..." 文字列) を抱えていましたが、メモ帳 ++ でのみ、尋ねたところ、友好的な返信を受け取り (見逃していたことを理解することができました)、時間をかけて詳細な手順を作成しました。 -ステップの説明は、メモ帳++で正規表現を使用して行頭を見つけるを参照してください

ベルサイユ、2010 年 4 月 27 日 22:53:25 +0200

于 2010-04-21T07:43:00.600 に答える
2

メモ帳 ++ : 検索モード = 正規表現

検索対象: (.*>)(.)

置換: \2

于 2013-04-22T08:07:33.763 に答える
1

事後少しですが、誰かに役立つ場合に備えて、ここにある例の1つ(sdgfsdgによる)に従って、Notepad++の正規表現をすばやく選択することができました。

同様に、次の形式のHTML選択ドロップダウンオプションのリストからいくつかの冗長データを引き出す必要がありました。

<select>
  <option value="AC">saint_helena">Ascension Island</option>
  <option value="AD">andorra">Andorra</option>
  <option value="AE">united_arab_emirates">United Arab Emirates</option>
  <option value="AF">afghanistan">Afghanistan</option>:
  ...
</select>

そして私が本当に欲しかったのは:

<select>
  <option value="AC">Ascension Island</option>
  <option value="AD">Andorra</option>
  <option value="AE">United Arab Emirates</option>
  <option value="AF">Afghanistan</option>
  ...
</select>

いくつかの髪を引っ張った後、バージョン5.8.5(2010年9月)の時点で、正規表現はまだ式の特定のループを許可していないようです(別の構文がない限り)、たとえば、次のようになります"> united_arab_emirated_emirates">追加の区切りアンダースコアにもかかわらず:

(">)([a-z]+([_]*[a-z]*)*)(">)

このクエリはほとんどの一般的な正規表現ツールで機能しましたが、Notepad ++内では、ネストされたアンダースコアの最大数(残念ながら8でした)を、はるかに醜いものを使用して手動で考慮する必要がありました。

(">)([a-z]+[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*)[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*(">)

Notepad ++の置換機能で正規表現ループをシミュレートする方法を誰かが知っている場合は、私に知らせてください。


何を見つける: *( ">)([az] + [_] [az] [_] [az] [_] [az] [_] [az])[_] [az] [_] [az] [_] [az] [_] [az]( ">)*


置換: ">


結果: 255回のオカレンスが置き換えられました。

于 2010-12-24T08:06:39.700 に答える
1

これは、Notepad++ 正規表現に関するすばらしい記事です
http://markantoniou.blogspot.com/2008/06/notepad-how-to-use-regular-expressions.html

于 2011-01-21T08:51:07.283 に答える
1

これは機能します。私のvimでそれをテストしました。一重引用符が問題です。

1,$s/^<option value value=['].['] >/
于 2008-11-13T16:31:12.927 に答える
1

ヴィム:

:%s/.* >//

于 2008-11-13T16:33:03.907 に答える
0

非常に単純な検索:

<option value value=.*?>

をクリックし、[置換] をクリックします

于 2016-05-09T06:29:28.827 に答える