[解決済み] キャメルケースやタイトルケースを分割するためのRegEx (上級)
2023-05-02 04:43:21
質問
私は 華麗な RegEx を使って、camelCase または TitleCase 式の部分を抽出することができます。
(?<!^)(?=[A-Z])
期待通りに動作しています。
- 値 -> 値
- キャメルバリュー -> キャメル/バリュー
- タイトル値 -> タイトル / 値
例えばJavaで。
String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
//words equals words = new String[]{"lorem","Ipsum"}
私の問題は、それがいくつかのケースで動作しないことです。
- ケース 1: VALUE -> V / A / L / U / E
- ケース2:eclipseRCPExt -> eclipse / R / C / P / Ext
私の心には、結果はshoudです。
- ケース 1: VALUE
- ケース2:eclipse / RCP / Ext
つまり、大文字の文字がn個与えられた場合。
- n 個の文字の後に小文字の文字が続く場合、そのグループは (n-1 文字) / (n 番目の文字 + 小文字) となります。
- n文字が末尾にある場合、グループは次のようになります。(n 個の文字) です。
この正規表現を改善する方法について何か考えがありますか?
どのように解決するのですか?
以下の正規表現は、上記のすべての例で動作します。
public static void main(String[] args)
{
for (String w : "camelValue".split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])")) {
System.out.println(w);
}
}
これは、ネガティブルックバインドが文字列の先頭のマッチを無視するだけでなく、大文字の前に別の大文字がある場合のマッチも無視するように強制することで動作します。これは、"VALUE" のようなケースを処理します。
正規表現の最初の部分は、"RPC" と "Ext" の間の分割に失敗することにより、それ自体で "eclipseRCPExt" に失敗します。これが 2 番目の句の目的です。
(?<!^)(?=[A-Z][a-z]
. この句は、文字列の先頭を除いて、小文字が続くすべての大文字の前に分割を許可します。
関連
-
アノテーション「@Retention」の役割
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
アクセス制限の解決方法: ---- in Java
-
htmlとwordの相互変換の実装(画像あり)
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み] 正規表現を使用した電話番号の検証方法
-
[解決済み] JSで文字列が正規表現にマッチするかどうかをチェックする
-
[解決済み】CamelCaseをsnake_caseに変換するPythonのエレガントな関数?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
eclipse にリソースリーク:'in' が閉じない
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
Java の double データ型における 0.0 と -0.0 の問題
-
Java基礎 - マッピングとQ/A