2016-12-20 2 views
-7

Итак, я работаю над сервером javascript, который разбирает какой-то текст для меня. и я ищу, чтобы вытащить единственное слово, которое имеет большую букву. Я знаю, что эту проблему можно решить с помощью регулярного выражения, хотя я понятия не имею, как это сделать, и искал некоторые рекомендации и что-то для начала.Найти одно слово, которое имеет заглавную букву

Например:

«Я пошел навестить мой друг Джон вчера»

вернется «Джон» из заглавной буквы, но не вернусь «I», потому что это первое слово в предложении.

Благодаря куча

+3

http://www.regular-expressions.info/tutorial.html – Bergi

+1

Вам действительно нужно игнорировать первое слово в строке и извлекать только заглавное слово * first *? Вы работаете только с ASCII или Unicode? –

+0

Что такое слово? Просто буквы ASCII? Если да, то решение SLePort является наиболее подходящим. Однако, если вам нужно получить «A» в «Я взял A от Джона», то это не сработает для вас. –

ответ

1

Простой ответ:

(?!^)\b[A-Z]\w* 

Он соответствует любому заглавному слову, который не находится в начале строки (проверяется с использованием негативного внешнего вида и границы слова).

See it here at regex101.

Но ваши требования отрывочны ...

Джон и я хорошие друзья.

вернет I. Это действительно то, что вы хотите?

И он будет работать только для первого предложения в строке. Кроме того, строка, начинающаяся с несимвольного, не будет выполнена. Например,

-Мне нравится Джон, сказала она.

«Это цитата».

Check out this extended regex101.

0
"I went to to go see my friend John yesterday".replace(/\s[A-Z][a-z]+/g, ' ***') 
+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! – kayess

0

прописная буква следует, по крайней мере, один не белому характер:

[A-Z]\S+ 
0

вероятно что-то вроде этого, извините, если это не то, что вы хотите

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); 
Смежные вопросы