GNU/Linux >> Linux の 問題 >  >> Linux

キャメルケースの単語の別々の要素?

テキストの「内部」単語境界でCamelCase単語を分割する方法はありますか?

たとえば、次の文字列が与えられます:

IamHelloTest forYou PickTest; 

入力として、出力として生成したい:

Iam
Hello
Test
for
You
Pick
Test

更新: 質問に役立つ回答がたくさんあるので、次のケースも含めるにはどうすればよいですか?

入力:

IamTestECHO TEST PickFoo BARFull;

必要な出力:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

更新: アンダースコアも含めるにはどうすればよいですか?

入力:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

必要な出力:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL
def
python
Function
Two

承認された回答:

2番目の例に対処するために、より「ルールベース」のアプローチを提案します。
次のPerlスクリプト(camelcaseprocを検討してください。 ):

#!/usr/bin/perl -CSDA -p

s{  \W+                                     # break on non-word
 |  _                                       # break on "_"
 |  (?<=\p{Ll})(?=\p{Lu})                   # ...aB... → ...a-B...
 |  (?<=\p{Lu})(?=\p{Lu}\p{Ll})             # ..ABCd.. → ...AB-Cd.
 |  (?<=I)(?=am)                            # exceptions rules
 }{-}xg                                     # 
  • 1行目:Unicodeを使用する(アクセントを処理するため、キリル文字)
  • 2行目:非文字を「\n」に置き換えます
  • 3,4,5行目:ブレークイントラワードルール(左側のコンテキスト、右側のコンテキストで定義)
  • 5行目:「Iam」の例外ルール
  • 5行目:x オプションを使用すると、正規表現にコメントを追加できます

通常のchmod +x camelcaseprocの後 次のように使用できます:

$ camelcaseproc <<< "IamTestECHO TEST PickFoo BARFull"
I-am-Test-ECHO-TEST-Pick-Foo-BAR-Full

$ camelcaseproc input-file

$ echo "IamTestECHO TEST PickFoo BARFull" | camelcaseproc

Linux
  1. 簡単なPHPメールテスト

  2. LinuxにAnsibleをインストールしてテストする方法

  3. ネットワーク接続をテストするためのポートへのTelnet

  1. 巨大なファイルの線Xから線Yへの猫?

  2. ファイル内で最も頻繁に使用されるN個の単語を検索しますか?

  3. _roffを使用して単語に下線を付けますか?

  1. 文字列内のパターンを見つけるためのシェルテスト?

  2. PHP スクリプトをテストする方法

  3. 毎週の cron ジョブをテストする