私は正規表現が初めてです。
3 桁の数字で始まり、大文字の単語の先頭にスペースを配置する長い単語列を検索する式は次のとおりです。
交換:
013TheBlueCowJumpedOverTheFence1984.jpg
と:
013 The Blue Cow Jumped Over The Fence 1984
注: 末尾の .jpg を削除します
これにより、時間を大幅に節約できます。
私は正規表現が初めてです。
3 桁の数字で始まり、大文字の単語の先頭にスペースを配置する長い単語列を検索する式は次のとおりです。
交換:
013TheBlueCowJumpedOverTheFence1984.jpg
と:
013 The Blue Cow Jumped Over The Fence 1984
注: 末尾の .jpg を削除します
これにより、時間を大幅に節約できます。
このタスクには正規表現を使用しません。それは醜く、維持するのが難しいでしょう。より良いアプローチは、文字列をループして、入力に基づいて文字列を再構築することです。
string retVal = "";
foreach(char s in myInput){
if(IsCapitol(s)){
reVal += " " + s;
}
//insert the rest of your conditions
}
この正規表現を使用してみてください\d+|[A-Z][a-z]*
すべての一致を収集し、それらをスペースで結合する必要があります
マッチ:
'[A-Z][a-z]*'
と置換する
' \0'
これは 1984 の前にスペースを入れず、.jpg を削除しないことに注意してください。でマッチングすることで前者を行うことができます
'[0-9]+|[A-Z][a-z]*'
代わりは。後者は、別の命令でそれを削除します。たとえば、正規表現で ' \.jpg$
' を '' に置き換えます。
は、多くの言語\
と同様に記述する必要があることに注意してください。\\
交換はそれぞれ異なるため、これには 2 つの操作が必要になります。
最初:
/(((?<![\d])\d)|((?<![A-Z])[A-Z](?![A-Z])))/
置き換え: ' $1'
(スペースに注意してください)
単語の間にスペースを入れます。二番目:
/\s*(.*)\s*\..*$/
と置換する:'$1'
末尾のスペースと拡張子を削除します。
最初の式は複数の部分に分けることができます:(?<![\d])\d
別の数字が先行していない数字を検索し、2 番目の式:((?<![A-Z])[A-Z](?![A-Z]))
大文字が先行または後続していない大文字を検索します。
文字列をどのように扱っているかなど、これに組み込みたいルールがさらにある可能性があります'BackInTheUSSR.jpg'
。
編集:これはその例を処理する必要があります:
/(((?<![\d])\d)|((?<![A-Z])[A-Z](?![A-Z]))|((?<![A-Z])[A-Z]+(?![a-z])))/