通常の RegEx 空白 (\s) と次のような句読点であるカスタム単語境界を使用して最初の N 単語を返す RegEx パターンが必要です.,;:!?-*_
編集 #1: コメントありがとうございます。
明確にするために:
- 単語の区切りとなる文字を設定したい
- これを「区切り文字セット」または strDelimiters と呼びましょう
strDelimiters = ".,;:!?-*_"
nNumWordsToFind = 5
- 単語は、strDelimiters に文字を含まない連続したテキストとして定義されます
- 正規表現の単語境界は、strDelimiters 内の 1 つ以上の文字を含む連続したテキストです。
- strDelimiters を使用して最初の nNumWordsToFind を取得/返す RegEx パターンを構築したいと思います。
編集 #2: 2015 年 8 月 8 日土曜日午前 12:49 US CT
@maraca は、最初に述べたように私の質問に確実に答えました。しかし、実際に必要なのは、単語数 ≤ nNumWordsToFind を返すことです。したがって、ソース テキストに 3 単語しかないのに、正規表現が 4 単語を要求する場合、3 単語を返す必要があります。nNumWordsToFind > ソース テキスト内の実際の単語数の場合、maraca によって提供される回答は失敗します。
例えば:
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マクロで使用します。
誰でも助けることができますか?ティア。