34

私はこれ#(\s|^)([a-z0-9-_]+)#iをすべての単語の最初の文字を大文字にするために使用します。ダッシュ(-)のような特別なマークの後にある場合は、文字も大文字にする必要があります

今それは示しています:

This Is A Test For-stackoverflow

そして、私はこれが欲しい:

This Is A Test For-Stackoverflow

私への提案/サンプルはありますか?

私はプロではないので、理解できるようにシンプルにしてください。

4

8 に答える 8

19

簡単な解決策は、単語境界を使用することです。

#\b[a-z0-9-_]+#i

または、数文字だけを照合することもできます。

#([\s\-_]|^)([a-z0-9-_]+)#i
于 2011-06-06T11:42:51.937 に答える
7

実際には、次のように大文字以外の最初の文字に一致するだけで、完全な文字列に一致する必要はありません。

'~\b([a-z])~'
于 2011-06-06T11:59:48.467 に答える
1

これが私のPythonソリューションです

>>> import re
>>> the_string = 'this is a test for stack-overflow'
>>> re.sub(r'(((?<=\s)|^|-)[a-z])', lambda x: x.group().upper(), the_string)
'This Is A Test For Stack-Overflow'

ここで「肯定的な後読み」について読んでください: https://www.regular-expressions.info/lookaround.html

于 2019-01-18T21:02:57.380 に答える