使用正则表达式在中英文之间添加空格

这篇具有很好参考价值的文章主要介绍了使用正则表达式在中英文之间添加空格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用正则表达式在中英文之间添加空格,Linux与Shell编程,正则表达式,regex,中英文,添加空格,匹配中文 博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维码进入京东手机购书页面。

有时为了排版需要,我们可能需要在文章的中英文之间添加空格,特别是中文中引用了英文单词时,这种情况使用正则表达式整体修订是最明智的做法。首先,推荐使用在线的正则表格式工具:https://regex101.com/ , 该工具非常强大,支持几乎所有的编程语言风格!

本文所谓的“英文单词”实为:由多个英文字符、空格、数字、小数点、连字符、下划线构成的复合短语,其中英文字符是必须的(避免替换类似:“第1节” 这样的文本),其他字符可选,这种Pattern除了可以匹配纯单词外,还能匹配类似S3EC2V1.0Example-1等文本。以下具体的做法,由于替换的方式不同,所以以下几种替换需要依次执行。

1. 前后都是中文字符,中间是英文单词

正则表达式:

([\u4e00-\u9fa5]+)([A-Za-z]+[\s\d\.\-_]*)+([\u4e00-\u9fa5]+)

替换表达式:

$1 $2 $3

2. 前面是中文字符,中间是英文单词,后面是中文标点符号

正则表达式:

([\u4e00-\u9fa5]+)([A-Za-z]+[\s\d\.\-_]*)+([\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b])

替换表达式:

$1 $2$3

3. 以英文单词开头(段落开始处),后面是中文字符

正则表达式:

(^([A-Za-z]+[\s\d\.\-\_]*)+)([\u4e00-\u9fa5]+)

替换表达式:

$1 $3

细节说明:

在测试第3种情况时,遇到一个“弯”,简单记录一下。起初测试的是下面的版本:

^([A-Za-z]+[\s\d\.\-\_]*)+([\u4e00-\u9fa5]+)

发现对于Spark 2 Spark-2 Spark_2 Spark2.0是种测试情况这样的文本,虽然能匹配上,但是替换时的分组有问题:
使用正则表达式在中英文之间添加空格,Linux与Shell编程,正则表达式,regex,中英文,添加空格,匹配中文

从上面的截图来看,第1分组实际上是最后一组单词,这就导致替换后前面的Spark 2 Spark-2 Spark_2 都丢失了。这个问题并不是匹配表达式写的不对,而是提取分组不对,对比上面的正确版本可知,我们需要在^([A-Za-z]+[\s\d\.\-\_]*)+的外面再用小括号包裹一层,从而形成一个独立分组,相应的分组替换就变成了$1 $3
使用正则表达式在中英文之间添加空格,Linux与Shell编程,正则表达式,regex,中英文,添加空格,匹配中文

测试文本:文章来源地址https://www.toymoban.com/news/detail-703106.html

测试Spark 2这种情况

测试Spark-2这种情况

测试Spark_2这种情况

测试Spark2.0这种情况

测试Spark 2 Spark-2 Spark_2 Spark2.0这种情况

Spark 2是种测试情况

Spark-2是种测试情况

Spark_2是种测试情况

Spark2.0是种测试情况

Spark 2 Spark-2 Spark_2 Spark2.0是种测试情况

到了这里,关于使用正则表达式在中英文之间添加空格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式使用汇总

    正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的字符串。在表单验证、Url映射等处都会经常用到。 平时可以使用正则表达式的在线测试工具练习和测试:正则表达式在线工具 我们在写用户注册表单时,只允许用户名包含字符、数字、下

    2024年02月15日
    浏览(51)
  • 正则表达式基本使用

    如果要想灵活的运用正则表达式,必须了解其中各种元字符的功能,元字符从功能上大致分为: 限定符 选择匹配符 分组组合和反向引用符 特殊字符 字符匹配符 定位符 \\\\ 符号说明:在使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至

    2024年02月07日
    浏览(47)
  • Swfit 使用正则表达式

    Swift 中可以通过多种方式进行正则使用和匹配。每一种情况的应用场景都不一样,可选择一种适合自己的。 Tip:使用 Raw String 定义正则表达式,可以减少使用转义符号 普通字符串正则:let pattern = “\\\\d{3,11}” 扩展分隔符正则:let pattern = #“d{3,11}”# 通过 NSpredicate 匹配正则

    2023年04月22日
    浏览(38)
  • JavaScript使用正则表达式

    正则表达式(RegExp)也称规则表达式(regular expression),是非常强大的字符串操作工具,语法格式为一组特殊字符构成的匹配模式,用来匹配字符串。ECMAScript 3以Perl为基础规范JavaScript正则表达式,实现Perl 5正则表达式的子集。JavaScript通过内置RegExp类型支持正则表达式,String和Re

    2024年02月05日
    浏览(65)
  • 04 - 慎重使用正则表达式

    在讲 String 对象优化时,提到了 Split() 方法,该方法使用的正则表达式可能引起回溯问题,今天就来深入了解下,这究竟是怎么回事? 开始之前,我们先来看一个案例,可以帮助你更好地理解内容。 在一次小型项目开发中,我遇到过这样一个问题。为了宣传新品,我们开发了

    2024年02月15日
    浏览(48)
  • 使用正则表达式验证银行帐号

    银行帐号是在任何特定银行开设账户后分配给账户持有人的唯一编号。从技术上讲,我们可以将银行帐号视为主键。银行帐号使我们能够进行借记、贷记和其他交易。根据 RBI 指南,银行帐号具有独特的结构。Account Number的结构如下: 银行帐号仅以数字形式书写。 银行帐号长

    2023年04月22日
    浏览(47)
  • 使用正则表达式设置强密码

    强密码需要同时含有大写字母、小写字母、数字、特殊符号。 这边先展示我自己写的。 以上代8位以上的强密码。 下面是具体解析: 正则表达式测试工具里可以自行检测写的对不对 目前较为简便的一种使用方法是搭配ApiModel和Pattern对变量进行配置。 如

    2024年02月14日
    浏览(55)
  • C#正则表达式的使用

    如果不引用则写成 System.Text.RegularExpressions.Regex 使用方法如下: 符号 含义 d 0-9的数字 D d的补集,所有非数字的字符(同[^0-9]) w 单词字符,指大小写字母、0-9数字、下划线 W w的补集 s 空白字符,包括换行符n、回车符r、制表符t、垂直制表符v、换页符f S s的补集

    2024年02月08日
    浏览(63)
  • Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法

    文章目录 前言 一、Jmeter中使用正则表达式匹配 1、选择 RegExp Tester 2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器” 二、关于正则表达式提取器里面字段的解释 参数说明 三、进一步解释Jmeter正则表达式提取器中的模板 1、当模板设置为$0$ 

    2024年02月13日
    浏览(54)
  • Java使用正则表达式-验证邮箱

    正则表达式通常被用于判断语句中,用来检查某一个字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串。 几种常用的正则表达式元字符: . 代表任意一个字符 \\\\d 代表0-9的如何一个数字 \\\\D 代表任何一个非数字字符 \\\\s 代表空白字符 如\\\'t\\\'、\\\'n\\\' \\\\S 代表

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包