次のような文があります。
Name: JOHN J. SMITH Sometag:
その部分をどのようにつかむのJOHN J SMITH
ですか?
Sometag
常に同じであるとは限らないため、そうでない単語まで、すべて大文字の単語をすべて取得するようになります。
アップデート
"[A-Z. ]*"
JOHN J を返します。SMITH S
"[A-Z. ]*\b"
は何も返しません。
"\b[A-Z. ]*\b"
これを試して
[A-Z. ]*\b
それがどうなるか教えて
あなたはこれでより完全になることができます
[\p{Lu}\p{M}\p{Z}\p{N}\p{P}\p{S}]*\b
しかし、それは一口です
Match a single character present in the list below «[\p{Lu}\p{M}\p{Z}\p{N}\p{P}\p{S}]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
A character with the Unicode property “uppercase letter” (an uppercase letter that has a lowercase variant) «\p{Lu}»
A character with the Unicode property “mark” (a character intended to be combined with another character (e.g. accents, umlauts, enclosing boxes, etc.)) «\p{M}»
A character with the Unicode property “separator” (any kind of whitespace or invisible separator) «\p{Z}»
A character with the Unicode property “number” (any kind of numeric character in any script) «\p{N}»
A character with the Unicode property “punctuation” (any kind of punctuation character) «\p{P}»
A character with the Unicode property “symbol” (math symbols, currency signs, dingbats, box-drawing characters, etc.) «\p{S}»
Assert position at a word boundary «\b»
またはそれより短い
\P{Ll}*\b
更新 1
あなたの編集後、私はこれを使用します
Name: (\P{Ll}*)[ ]
目的の一致はグループ 1 になります。単一のスペースを示すために、最後に [ ] を追加したことに注意してください。必要に応じて、この文字クラスをスペースに変換できます。
C# では、これは次のようになります。
string resultString = null;
try {
Regex regexObj = new Regex(@"Name: (\p{Ll}*)[ ]");
resultString = regexObj.Match(subjectString).Groups[1].Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
否定的な先読みを使用して、大文字の後に小文字が続いていないことを見つけることができませんでしたか?
(([AZ. ])(?![az:]))+
String caps=Regex.Match("Name: JOHN J. SMITH Sometag: ","(([A-Z. ])(?![a-z:]))+").ToString()