gpt4 book ai didi

javascript - 用于标记文本的正向前瞻正则表达式

转载 作者:行者123 更新时间:2023-12-01 01:50:17 25 4
gpt4 key购买 nike

我正在尝试标记以下文本:

联邦调查局是一个缩写词。 FBI 是缩写词,c.i.a.也可以是其中之一。 $1,000,000.00 是一种货币值(value),例如 1.000.000,00£。这是测量 cm24.54 和 34.3cm...

像这样:

联邦调查局|是 |一个 |缩写 | 。 |联邦调查局|是 |一个 |缩写 | , |中央情报局。 |可以|还|是|一| 。 | $ | 1,000,000.00 | 1,000,000.00是 |一个 |货币 |值(value)|作为 |嗯|作为 | 1.000.000,00 | 1.000.000,00 |英镑 |对于 |示例| 。 |在这里 |是 |一个 |测量|厘米 | 24,54 | 24,54和 | 34.3 | 34.3厘米 | ...

我已经开始编写一个正则表达式来执行此操作,但我不确定如何将首字母缩写词和数字放在一起。

我的正则表达式如下所示:str.split(/\s|(?=[^A-Za-z0-9#@])/),它分割并丢弃空格,它会分割非字母数字字符(不包括 #@),而不使用正向前视删除它们。

如何修改我的正则表达式以按照上述方式分割文本?

最佳答案

挑选标记比挑选漏洞容易得多。只需沿着列表向下查找,修复奇怪的内容,移动子表达式,直到它们执行您想要的操作。请记住,在 A|B 中,A 具有优先权。例如,这似乎适用于上面的代码片段:

let re = /\$|\£|cm|\.{3,}|[0-9,.]+|(?:\w\.){2,}|[\w.-]+@[\w.-]+|[-\w]+/g;
let text = "F.B.I. is an acronym. FBI is an acronym, c.i.a. could also be one. $1,000,000.00 is a currency value as well as 1.000.000,00£ for example. Here is an email address email@address.com and a measure cm24.54 and 34.3cm...";
console.log(text.match(re));

但是,请注意,这在很大程度上是对异常进行编目的练习。肯定会有一些事情您会错过,或者最终会出错,甚至您需要基于上下文的相互矛盾的规则。

编辑:这就是我在评论中所说的内容,但如果您发现了那就太好了。

let re = /(\$|\£|cm|\.{3,}|[0-9,.]+|(?:\w\.){2,}|[\w.-]+@[\w.-]+|[-\w]+)/g;
let text = "F.B.I. is an acronym. FBI is an acronym, c.i.a. could also be one. $1,000,000.00 is a currency value as well as 1.000.000,00£ for example. Here is an email address email@address.com and a measure cm24.54 and 34.3cm...";
let theSplit = text.split(re);
console.log("The split:", JSON.stringify(theSplit));
let stuffBetween = theSplit.filter((e, i) => i % 2 == 0);
console.log("Just the stuff between:", JSON.stringify(stuffBetween));

关于javascript - 用于标记文本的正向前瞻正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51611267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com