如何在分隔之间选择多个单词

How to select multiple words between delimitations

本文关键字:单词 选择 之间 分隔      更新时间:2023-09-26

我的大脑过热了。您是否知道如何在以下文本中使用 javascript 中的正则表达式选择:words to select

Begin :word1 word2: free text :word: :words to select :done:

我的实际正则表达式是:

/'B:(['-+'w]*)$/g

每个术语都由冒号(如:wordexample::multiple words:)分隔,我只希望单词以冒号开头,而不是以:结尾所以,困难在于排除被冒号包围的好词......

我正在处理包含多个单词的文本,并且在选择多个单词时遇到问题。

我认为这会起作用:/:'S[^:]*(?='s:|$)/g

正则表达式 101 可以比我更好地解释它:https://regex101.com/r/fA2vP9/2

匹配字符:字面意思

''S 匹配任何非空格字符 [^''r'''t''f ]

[^:]* 匹配零个或多个单个字符,而不是文字字符:

(?=''s:|$) 正面展望 - 断言任何空格字符 [''r'''t''f ] 后跟字符 : 字面意思 OR 断言字符串末尾的位置

g 修饰符:全局。所有匹配项(第一场比赛时不返回)

将以下字符串与 .match(/:'S[^:]*(?='s:|$)/g) 一起使用,可以获得以下输出:

例 1

"Begin :word1 word2: free text :word: :words to select :done:"
output> [":words to select"]

例 2

"Begin :word1 word2: free text :word: :words to select :done: :test :test:"
output> [":words to select", ":test"]

例 3

"Begin :word1 word2: :i :free: text :word:"
output> [":i"]

例 4

"Begin :word1 word2: free text :word"
output> [":word"]
这是我

能得到的最接近的:

/(?::)(('b'w+'b(?!:)) )+(?::)/g