使用正则表达式时如何保留分隔符?

2023-12-26

我做了一个关于标点符号和正则表达式的问题,但很混乱。

假设我有这样的文字:

String text = "wor.d1, :word2. wo,rd3? word4!"; 

我正在这样做:

String parts[] = text.split(" ");

我有这个:

wor.d1, | :word2. | wor,d3? | word4!;

我需要做什么才能拥有这个?(保留边界上的符号,但仅限我指定的符号:.,!?:,不是全部)。

wor,d1 | , | : | word2 | . | wor,d3 | ? | word4 | !

UPDATE

我使用这些正则表达式得到了一些好的结果,但它在单词开头的标点符号上的所有分割之前给出了一个空字符。

有没有办法让开头没有这个空字符?

这个正则表达式好还是有更简单的方法?

public static final String PUNCTUATION_SEPARATOR =
        "("
        + "("
        + "(?=^[\"'!?.,;:(){}\\[\\]]+)"
        + "|"
        + "(?<=^[\"'!?.,;:(){}\\[\\]]+)"
        + ")"
        + "|"
        + "("
        + "(?=[\"'!?.,;:(){}\\[\\]]+($|\n))"
        + "|"
        + "(?<=[\"'!?.,;:(){}\\[\\]]+($|\n))"
        + ")"
        + ")";

您确定要使用正则表达式吗? 有一个更快的按单个字符分割的实现:StringTokenizer。 它可以返回分隔符。

String str= "word1, word2. word3? word4!";
String delim = ",.!?";
StringTokenizer st = new StringTokenizer(str, delim, true);
while (st.hasMoreTokens()) {
  String token = st.nextToken();
  ... // token will be: "word1", ",", " word2", ".", etc...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式时如何保留分隔符? 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 使用 asynctask 加载图像时 Android 列表视图中的奇怪行为

    我希望任何人都可以帮助我解决我遇到的 ListView 问题 昨天我一直在用头撞铁墙 因为我不知道问题出在哪里 这本来不是我的项目 这使得它变得更加困难 我有一个列表视图 我想在其中加载联系人行 在每行的左侧 我想 下载 异步加载图像 为此
  • 在 OpenCV 3.0 中计算密集 SIFT 特征

    从 3 0 版本开始 DenseFeatureDetector 不再可用 有人可以告诉我如何在 OpenCV 3 0 中计算 Dense SIFT 特征吗 我在文档中找不到它 预先非常感谢您 您可以传递一个列表cv2 KeyPoints t
  • 为什么服务器端Javascript没有被广泛使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 拦截并过滤HTTP请求

    我想拦截 嗅探传入的 HTTP 请求并过滤 修改它们的内容 在它们到达应用程序之前 Fiddler 似乎有这个功能 但为了集成和可移植性 我宁愿有一些 Java C 库来做到这一点 例如 JPCAP 它拦截 IP 数据包 但是 如上所述 我
  • 如何在条件展开转场中传递数据?

    我尝试建立一个RSS阅读器 在 添加提要 页面上 如果我点击 添加 按钮 我希望检查提要是否已成功添加 如果添加了 则触发unwind segue 并返回主页 如果没有添加 则停留在当前页面 我知道我可以在 添加 按钮上构建 IBActio
  • 如何禁用 Tmux 中的键绑定

    使用 Tmux 和 Vim 有时很痛苦 对我来说 冲突之一是Control S 我在 Vim 中使用它来分割打开缓冲区 但是当使用 Tmux 时 嗯 Tmux 用它做了一些愚蠢的事情 我不明白其目的是什么 但基本上 当C s在 Tmux 中
  • PHP文件下载问题

    我目前在用户下载存储在我的服务器上的文件时遇到一些问题 我设置了代码 以便在用户点击下载按钮后自动下载文件 它适用于所有文件 但当大小超过 30 MB 时 就会出现问题 用户下载有限制吗 另外 我已经提供了示例代码 并且想知道是否有比使用
  • Python 3.4 中“强制转换”为 int

    我正在用 Python 3 4 编写一些简单的游戏 我对 Python 完全陌生 代码如下 def shapeAt self x y return self board y Board BoardWidth x 抛出错误 TypeError
  • 离子段仅在点击内容输入后改变

    我正在使用 ionicv2 和 Adob e Creative SDK 构建照片编辑应用程序 我已经成功实现了创意SDK C SDK 成功返回编辑文件的 url 后 我会推送包含段的页面以及文件 URL 问题出在第二页上 当我单击该段时 它
  • 使用 PHP-EWS 访问另一个邮箱日历事件

    在 PHP EWS 库中 https github com jamesiarmes php ews https github com jamesiarmes php ews 我可以使用以下代码访问特定用户的日历事件 https github
  • 将编程语言嵌入到程序中[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否可以让滚动边距顶部在 Safari 中工作?

    我在锚点上使用滚动边距顶部来为我的粘性标题添加空间 但 Safari 不支持它 这些文档在这里 https developer mozilla org en US docs Web CSS scroll margin https devel
  • Kotlin 文档中未解决的@sample

    例如 当我检查 Kotlin 文档时Collections map Intellij Idea 无法解析文档中提到的参考 我应该向我的项目添加什么才能使其正常工作 这是一个错误 https youtrack jetbrains com is
  • 了解 Java 序列化

    我正在尝试比较标准的 Java 反序列化 并询问这是否是正确的方法 我写了以下课程 first 1234 1234 21341234 234123412341234124L fifth public class ArrayInputStre
  • 在Python中将图像文件转换为浮点数组

    如何将图像转换为浮点数数组 img cv2 imread img png 现在将 img 转换为 float 所以我得到 print img 0 0 类似于 4 0 2 0 0 0 而不是 4 2 0 你有好主意吗 非常感谢 您可以将整数列
  • Eclipse RCP - 优秀的 Eclipse Forms 教程/资源

    我正在寻找资源来学习如何在 Eclipse RCP 应用程序中有效使用 Eclipse 表单 我试图在 Indigo 上使用最新的 SWT Window Builder 插件 但这种方式构建表单对我来说并不适用 例如 不能将任何内容放入可扩
  • SSL 错误:无效或自签名证书 - Magento 产品中的图像上传

    I get SSL Error Invalid or self signed certificate将图像上传到产品时出错 我能够轻松将图像上传到类别 但我无法将图片上传到产品 是的 请不要标记为重复 我已经检查过了Magento 上传图像
  • 如何在 Windows 上使用 clang 和 mingw-w64 标头

    我有 clang 3 9http llvm org releases 3 9 0 LLVM 3 9 0 win32 exe http llvm org releases 3 9 0 LLVM 3 9 0 win32 exe clang ve
  • 在两个 ASM GCC 内联块之间传播进位位

    亲爱的汇编 C 开发人员 问题是 即使它有效 在两个 ASM 块之间传播进位 或任何标志 是现实的还是完全疯狂的 几年前 我开发了一个用于低于 512 位 在编译时 的大型算术的整数库 我当时没有使用 GMP 因为对于这种规模 由于内存分配
  • 使用正则表达式时如何保留分隔符?

    我做了一个关于标点符号和正则表达式的问题 但很混乱 假设我有这样的文字 String text wor d1 word2 wo rd3 word4 我正在这样做 String parts text split 我有这个 wor d1 wor