【发布时间】:2014-05-28 00:24:06
【问题描述】:
我需要标记和处理基于编程语言的字符串。
例如,让我们使用以下字符串:
" THE QUICK BROWN FOX JUMPED-OVER THE LAZY(2) DOG."
在 javascript 中,我可以执行以下操作将其拆分为一个数组:
var v = " THE QUICK BROWN FOX JUMPED-OVER THE LAZY(2) DOG.".match(/\S+/g);
这会产生以下数组:
["THE", "QUICK", "BROWN", "FOX", "JUMPED-OVER", "THE", "LAZY(2)", "DOG."]
如何更改匹配项的正则表达式以使句号成为单独的元素,从而产生以下输出:
["THE", "QUICK", "BROWN", "FOX", "JUMPED-OVER", "THE", "LAZY(2)", "DOG", "."]
请注意:
- 我无法使用 \w,因为它会将 2 拆分为单独的标记,删除括号并删除句号。
- 这不是一个重复的问题,因为其他关于拆分句子的问题在充分处理括号的同时没有处理句号问题。
- 如果通过正则表达式无法做到这一点,那么是否可以从最后一个标记中删除句号,使最后一个标记变为“DOG”?
【问题讨论】:
-
'(', '2' 和 ')' 不是单独的标记吗?
-
@RobG 如果我要进行标记,我会标记所有内容,包括空格。
-
我正在解析COBOL,所以我只对关键字感兴趣。我目前对空间不感兴趣(可能会改变)。
-
@JoeFrambach — 我想这取决于您对“令牌”的定义。空格不是tokens in ECMAScript(例如),但可能在其他上下文中。
标签: javascript regex text tokenize