1

次のような文字列があるとします。

OneTwo
ThreeFour
AnotherString
DVDPlayer
CDPlayer

「DVDPlayer」と「CDPlayer」を除いて、キャメルケースのものをトークン化する方法を知っています。手動でトークン化できることは知っていますが、すべてのケースを処理できる正規表現を見せてもらえますか?

編集:期待されるトークンは次のとおりです:

OneTwo -> One Two
...
CDPlayer -> CD Player
DVDPlayer -> DVD Player
4

5 に答える 5

4

質問に対する私の答えを見てください。.NET- 「キャップ」で区切られた文字列を配列に分割するにはどうすればよいですか?

正規表現は次のようになります。

/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g

$\b:に置き換えることで、キャメルケースのトークンを検索できるように少し変更できます。

/([A-Z]+(?=\b|[A-Z][a-z])|[A-Z]?[a-z]+)/g
于 2009-09-07T12:12:33.767 に答える
4

この正規表現を試してください:

[A-Z](?:[a-z]+|[A-Z]*?(?=[A-Z][a-z]|\b))
于 2009-09-07T12:14:21.690 に答える
1

正規表現

([A-Z]+[a-z]*)([A-Z][a-z]*)

すべての文字列が2単語の長さで、2番目の単語がDVDのようではないと仮定すると、必要な処理を実行できます。

つまり、それはあなたの例では機能しますが、実際にやろうとしていることでは機能しないかもしれません。

于 2009-09-07T12:15:36.577 に答える
1

これが私の試みです:

([A-Z][a-z]+)|([A-Z]+(?=[A-Z][a-z]+))
于 2009-09-07T12:20:22.557 に答える
0

貪欲でない先を見据えてみてください。トークンは、1つ以上の大文字とそれに続く0つ以上の小文字です。次の2文字が大文字と小文字の場合、トークンは終了します。このセクションの一致は、貪欲でない一致を使用できるものです。このアプローチには制限がありますが、提供した例では機能するはずです。

于 2009-09-07T12:05:41.893 に答える