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

有时为了排版需要,我们可能需要在文章的中英文之间添加空格,特别是中文中引用了英文单词时,这种情况使用正则表达式整体修订是最明智的做法。首先,推荐使用在线的正则表格式工具: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是种测试情况这样的文本,虽然能匹配上,但是替换时的分组有问题:
在这里插入图片描述

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

测试文本:

测试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是种测试情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/93761.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Selenium-用这个框架自动化任何你想做的事情!

Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器(如 Chrome、Opera 和 Microsoft Edge)中的工具,用于帮助开发人员调试和研究网站。 借助 Chrome DevTools,开发人员可以更深入地访问网站&#xf…

nginx反向代理 负载均衡

目录 1.反向代理介绍: 2.七层代理和四层代理: 2.1 七层代理: 2.2 四层代理: 3.反向代理web服务器: 3.1 代理服务器配置: 3.2 服务器配置 : 3.3 客户端访问: 3.4 代理不同端口&am…

Lvs+KeepAlived高可用高性能负载均衡

目录 1.环境介绍 2.配置keepalived 3.测试 1.测试负载均衡 2.测试RS高可用 3.测试LVS高可用 3.1测试lvs主服务宕机 3.2.测试lvs主服务器恢复 4.我在实验中遇到的错误 1.环境介绍 环境:centos7 RS1---RIP1:192.168.163.145 VIP 192.168.163.200 RS2---RIP2…

Java智慧工地源码 智慧工地APP源码

Java智慧工地源码 智慧工地APP源码 系统定义: 智慧工地信息化管理平台是依托计算机信息、网络通讯、物联网、系统集成及云计算技术,通过数据采集、信息动态交互、智能分析,建立起来的一套集成的项目建设综合管理系统。实现项目管理信息化、网…

wangluobiancheng

UDP send: receive: TCP

ARM DIY(四)WiFi 调试

文章目录 焊接打开内核编译选项重新编译内核烧录 && 运行 && 测试完善脚本测速手搓天线正式天线 焊接 换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位 焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻 硬件部分就这…

C# Dapper 操作Oracle数据库

nuget安装内容 1.配置连接字符串 OracleConnectionString这个可用 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","…

公司内部网段多管控乱,该如何规范跨网文件传输交换?

古往今来,高筑墙一直是有效的防御措施。从边塞长城到护城河外的高高城墙,都是利用隔离地域的形式实现保护安全域的效果。这样一来,城内的安全域可以在遇到危险时受到有效保护。 在企业网络安全防护方面,网络安全域隔离也是网络安全…

isEmpty 和 isBlank 的区别

干了3年java,代码中 isEmpty 和 isBlank 的区别 都不知道,一顿瞎用。也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们…

1.(python数模)单函数读取常用文件

Python单函数读取常用文件 代码如下: import pandas as pd# 读取数据文件 def readDataFile(readPath): # readPath: 数据文件的地址和文件名try:if (readPath[-4:] ".csv"):dfFile pd.read_csv(readPath, header0, sep",") # 间隔符为逗…

DBO优化SVM的电力负荷预测,附MATLAB代码

今天为大家带来一期基于DBO-SVM的电力负荷预测。 原理详解 文章对支持向量机(SVM)的两个参数进行优化,分别是:惩罚系数c和 gamma。 其中,惩罚系数c表示对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。c越小&#xff0…

按照json文件的值复制图片

按照json文件的值复制图片 文件格式处理当前JSON代码封装增加批处理 文件格式 0是不挑选,1是挑选 处理当前JSON # coding: utf-8 from PIL import Image, ImageDraw, ImageFont import os import shutil import cv2 as cv import numpy as np import jsondef read…