Мне нужен шаблон RegEx, который вернет первые N слов, используя пользовательскую границу слова, которая представляет собой обычный пробел RegEx (\s) плюс знаки препинания, такие как .,;:!?-*_
РЕДАКТИРОВАТЬ № 1: Спасибо за все ваши комментарии.
Чтобы было ясно:
- Я хотел бы установить символы, которые будут разделителями слов
- Назовем это «Набор разделителей» или strDelimiters.
strDelimiters = ".,;:!?-*_"
nNumWordsToFind = 5
- Слово определяется как любой непрерывный текст, который НЕ содержит ни одного символа в strDelimiters.
- Граница слова RegEx — это любой непрерывный текст, который содержит один или несколько символов из strDelimiters.
- Я хотел бы создать шаблон RegEx для получения/возврата первого nNumWordsToFind с использованием strDelimiters.
РЕДАКТИРОВАТЬ № 2: сб, 8 августа 2015 г., 00:49, США, Коннектикут.
@maraca определенно ответил на мой вопрос, как было сказано изначально. Но на самом деле мне нужно вернуть количество слов ≤ nNumWordsToFind. Поэтому, если в исходном тексте всего 3 слова, а мое регулярное выражение запрашивает 4 слова, мне нужно, чтобы оно вернуло 3 слова. Ответ, предоставленный маракой, не работает, если nNumWordsToFind > количество фактических слов в исходном тексте.
Например:
one,two;three-four_five.six:seven eight nine! ten
Он увидит это как 10 слов. Если мне нужны первые 5 слов, он вернет:
one,two;three-four_five.
У меня есть этот шаблон с использованием обычного пробела \s, который работает, но НЕ совсем то, что мне нужно:
([\w]+\s+){<NumWordsOut>}
где <NumWordsOut>
— количество возвращаемых слов.
Я также нашел этот шаблон границы слова, но я не знаю, как его использовать:
«граница реального слова», которая определяет границу между буквой ASCII и не буквой.
(?i)(?<=^|[^a-z])(?=[a-z])|(?<=[a-z])(?=$|[^a-z])
Тем не менее, я хотел бы, чтобы мои слова допускали и цифры.
IAC, я не смог использовать приведенный выше пользовательский шаблон границы слова, чтобы вернуть первые N слов моего текста.
Кстати, я буду использовать это в макросе Keyboard Maestro.
Кто-нибудь может помочь? ТИА.
.,;:!?-*_
. Вы имеете в виду точно эти символы или похожие символы. В последнем случае вы должны указать точно, какие символы вы собираетесь использовать в качестве разделителей. - person Anonymous   schedule 08.08.2015