所以我正在研究一個javascript服務器,它爲我解析一些文本。我期待拿出一個有大寫字母的單詞。我知道這個問題可以用正則表達式來解決,儘管我不知道該怎麼做,並且正在尋找一些指導和一些開始。找到一個有大寫字母的單數詞
例如:
「我去去看我的朋友約翰昨天」
會因爲大寫字母返回「約翰」,但不會回到「我」,因爲它是句子中的第一個單詞。
多謝
所以我正在研究一個javascript服務器,它爲我解析一些文本。我期待拿出一個有大寫字母的單詞。我知道這個問題可以用正則表達式來解決,儘管我不知道該怎麼做,並且正在尋找一些指導和一些開始。找到一個有大寫字母的單數詞
例如:
「我去去看我的朋友約翰昨天」
會因爲大寫字母返回「約翰」,但不會回到「我」,因爲它是句子中的第一個單詞。
多謝
簡單的回答:
(?!^)\b[A-Z]\w*
它匹配不在行首的任何大寫字母(使用負向預讀和字邊界進行檢查)。
但是你的要求都比較粗略......
約翰和我是很好的朋友。
將返回I
。那真的是你想要的嗎?
它只適用於連續的第一句話。另外一個以非字符開頭的行會失敗。例如:
-我就像約翰一樣,她說。
「這是一個報價。」
"I went to to go see my friend John yesterday".replace(/\s[A-Z][a-z]+/g, ' ***')
儘管這段代碼可以解決這個問題,但[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess
大寫字母后面至少一個非空白字符:
[A-Z]\S+
大概是這樣的,對不起,如果這是不是你想要的
var text = "I went to to go see my friend John yesterday";
var arr = text.split(' ');
var upperCaseText = [];
for(var i = 1; i < arr.length; i++) {
if(/[A-Z]/.test(arr[i])) {
upperCaseText.push(arr[i]);
}
}
console.log(upperCaseText);
http://www.regular-expressions.info/tutorial.html – Bergi
你真的需要忽略字符串中的第一個單詞,只能獲取* first *大寫的單詞嗎?你只使用ASCII或Unicode嗎? –
什麼是「單詞」?只是ASCII字母?如果是,那麼SLePort的解決方案是最合適的。然而,如果你需要在「我從約翰那裏得到A」中得到「A」,那麼它就不適合你。 –