gpt4 book ai didi

javascript - 在特定条件下为新句子添加空格或句点的正则表达式

转载 作者:行者123 更新时间:2023-11-30 12:02:04 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式(可在 Javascript/Node.js 中实现)以:

  • 在出现字母或字符(A-Za-z!@#$%^&*() 等)时添加一个空格。但NOT a number) 后跟一个句点,然后再跟一个大写字母(中间没有空格)和/或,
  • 每当空格后跟一个大写字母(A-Za-z 但不是数字或字符时,添加句点 (.) ) 除非有多个大写字母,例如首字母缩写词,和/或,
  • 只要字符串中任何字符、字母或数字后面没有跟任何其他内容,就添加句点 (.)。

例如第一种情况:

This is a sample sentence.This is a sample new sentence.

应该变成:

This is a sample sentence. This is a sample new sentence.

以第二种情况为例:

This is a sample sentence This is a sample new sentence.

应该变成:

This is a sample sentence. This is a sample new sentence.

而且,在第二种情况下:

This is a sample sentence with TEST This is a sample new sentence.

应该变成:

This is a sample sentence with TEST. This is a sample new sentence.

以第三种情况为例:

This is a sample sentence. This is a sample new sentence

应该变成:

This is a sample sentence. This is a sample new sentence.

请注意我要搜索和更改的这些示例在句号和间距位置上的差异。

我搜索了这个的变体并找到了一些,但没有一个符合上面列出的确切标准。 目前我只担心句点和空格,而不是其他类型的标点符号,除非有更通用的解决方案可以适用于不止这些情况。我正在寻找使用这将开始清理某些日志文件和其他区域中的语法。

如果这读起来太复杂,我提前道歉。发表评论,如果需要,我会很乐意澄清。

最佳答案

虽然我应该包括关于使用编程方式来混淆自然语言(对于计算机来说非常复杂且难以理解)的标准警告,但是一系列正则表达式(当在字符串上按顺序运行时)做你想要出现在下面。

对于第一种情况:

s/([^0-9.])\.([^0-9])/\1.\2/g

对于第二种情况:

s/([^.]) ([A-Z][a-z])/\1.\2/g

对于第三种情况:

s/([^.])$/\1./g

稍微分解一下:

s/A/B/g 表示“用 B 替换文本中出现的每个正则表达式 A”。

(A) 表示“捕获 A,以便我们稍后可以再次使用它”(这称为 捕获组)。

[^0-9.] 表示“匹配所有非数字字符或句点字符的字符”。这是一个否定字符类

\. 匹配文字句点 (.) 字符。

$ 是行尾 anchor - 它匹配字符串的结尾。

\1\2 分别指的是第一个和第二个捕获组。

所以,基本上,这些正则表达式所做的是捕获要修改的区域周围的内容,然后用内容加上修改内容替换这些内容和区域。

关于javascript - 在特定条件下为新句子添加空格或句点的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408015/

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