1

特定の文字列に一致する正規表現を探しています。

  1. 常に "fu:
  2. いつもで終わる"
  3. 開始点と終了点の間に少なくとも 1 つの大文字が含まれている

ポイント3は私が本当に解決できない部分です。

正規表現"fu:(.*)?"は、ポイント 3 を除くすべての文字列に一致します。

[編集] 現在はかなり近いですが、唯一の問題は 2 番目以降に止まらないことです ". 基本的に、この文字列:
"fu:no capital letter:,some other random text WITH CAPITAL LETTERS"
は一致しますが、そうではありません。

4

4 に答える 4

3

あなたのために働く正規表現はこれです:

/^"fu:.*?[A-Z].*?"$/

上記の正規表現のライブデモはこちら

于 2012-05-31T09:45:51.027 に答える
1
^"fu:.*[A-Z].*"$

複数行のテキストで検索したい場合は、複数行モードを忘れないでください。

^"fu:  - starts with "fu:
.*     - any other characters
[A-Z]  - capital letter
.*     - other characters
"$     - " at the end

それをテストするための良いツール: http://www.regexplanet.com/advanced/java/index.html

于 2012-05-31T09:08:45.197 に答える
0

私は anubhava のソリューション (A から Z の範囲の大文字のみに一致する) の問題についてコメントしましたが、自分で解決策を見つけました。これには、Unicode をサポートするPOSIX 準拠の正規表現エンジンが必要であることに注意してください。

私の解決策は

/^"fu:.*[[:upper:]].*"$/

英語以外の言語 (部分的または完全に異なるアルファベット) で大文字を見つける問題を解決します。

Ruby での例:

rx = /^"fu:.*[[:upper:]].*"$/
arr = ['"fu:Berlin"', '"fu:İstanbul"', '"fu:Washington"', '"fu:Örebro"', '"fu:Москва"']
arr.map {|s| s.scan rx}

この場合、すべての文字列が一致します。

于 2012-05-31T11:57:20.003 に答える
0

何かのようなもの

^"fu:([^"]*?[A-Z][^"]*?)"$
于 2012-05-31T09:06:31.980 に答える