17

「,」が 10 個以上含まれている行を見つける必要があります (CSV のインポートでエラーが発生したため、手動で修正する必要があります)。私はメモ帳++を使用しているので、行に一致するようにreqexを書く必要はなく、comasに一致するだけです。

(.*,.*){11,100}   //does not work
4

2 に答える 2

20

.*カンマにも一致します。否定された文字クラスを持つものを除外する必要があります (コンマを除く[^,]任意の文字に一致します):

^[^,\r\n]*(?:,[^,\r\n]*){11,}$

\r\n文字クラスに追加したか、改行全体で一致します。

ただし、これは引用符で囲まれた文字列に含まれるコンマもカウントするため、カンマがあると CSV 行のフィールド数を誤って判断することに注意してください。

于 2013-01-22T17:28:29.417 に答える
6

Notepad++ バージョン 6+ (PCRE Perl-Compatible Regular Expressions ライブラリを使用) と ' . 検索ウィンドウで改行に一致する ' ボックスにチェックが入っていない場合:

(.*?,){11,}

行に 10 個を超えるコンマが含まれている場合、これは行の先頭から最後のコンマまで一致します。

(.*?,)次の文字がカンマになるまで、改行以外の任意の文字に可能な限り一致します。{11,}11回以上という意味です。

' かどうかに関係なく、正規表現を機能させたい場合改行に一致' ボックスがチェックされている場合は、次を使用できます。

 ([^\n]*?,){11,}

' の場合、正規表現は機能します。改行に一致するボックスはチェックされていませんが、貪欲に任意の文字に一致するため、非常に多くの潜在的な一致が存在する可能性があり、アプリケーションがハングするように見える場合があります。?の後に追加して、ワイルドカードが遅延または不本意.*に一致するように、つまりできるだけ少ない回数で問題を解決する必要があります。

PCRE man ページ
Perl 正規表現ドキュメント- 推奨。
Notepad++ の「古い」正規表現のチュートリアル

于 2013-01-22T17:55:17.277 に答える