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

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(使用前将#替换为@)

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

  • java.lang.NoClassDefFoundError:HttpSessionListener

    我正在尝试部署一场我没有编写的战争 但我在日志中收到此错误 java lang NoClassDefFoundError HttpSessionListener 我知道 HttpSessionListener 位于servlet api j
  • 无法从 TemporalAccessor 获取 OffsetDateTime

    当我这样做时 String datum 20130419233512 DateTimeFormatter formatter DateTimeFormatter ofPattern yyyyMMddHHmmss withZone ZoneI
  • 无法解析配置“:app:debugRuntimeClasspath”的所有文件。问题

    我的 android studio 遇到了下一个问题 导致 org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveEx
  • 黄瓜与 Micronaut

    我正在尝试将 Cucumber 与 Micronaut 一起使用 但当我尝试将其与 Cucumber 一起使用时 MicronautTest 注释根本不起作用 未注入 theApple 请参阅下面的代码 如果我在没有黄瓜的情况下运行它就可以
  • GSON:自定义对象反序列化

    好吧 我编辑了这个问题 因为它不够清楚 Edit 2 更新了 JSON 文件 我在 Android 应用程序中使用 GSON 我需要解析来自服务器的 JSON 文件 而且有点太复杂了 我不想让我的对象结构太重 所以我想简化内容 所以我的对象
  • 如何使用 Spring Security 跨多个基于 JVM 的应用程序实现单点登录

    我目前正在尝试跨多个基于 JVM Grails Servlet 的 Web 应用程序实现单点登录解决方案 这些应用程序目前都部署在同一个 servlet 容器 当前是 Tomcat 但不想将我的解决方案仅限于 Tomcat 中 所有 Web
  • PrintStream是有缓冲的,但是flush不会降低性能,而BufferedOutputStream会加速性能

    我预计由于 PrintStream 是缓冲的 通过在每次 print 之后添加刷新操作 速度性能应该会显着降低 但事实并非如此 如下面的代码片段所示 此外 将 PrintStream 包裹在 BufferedOutputStream 周围可
  • Java 中的本机方法

    我花了一些时间学习什么是 Java Native 方法以及它们是在平台相关代码 主要是 C 中实现的 但是我在哪里可以找到这些 Java 的本机实现呢 例如 Thread 类的 sleep long millis 方法是本机的 但它的实现代
  • 文件保存在文件系统中 VS 保存在数据库中

    我正在设计一个 servlet 或 Struts2 中的操作 用于文件 图像 文档等 下载 但我想知道哪种更好的方法可以将文件保留在文件系统和数据库中 只需保留文件的路径或将文件保留在数据库中 如 BLOB 我知道当我查询数据库时 哪里的
  • 密码验证 PHP 正则表达式

    我是正则表达式的新手 我需要使用 php 验证密码 并使用正则表达式执行以下密码策略 密码 必须至少有 8 个字符 必须有2个号码 允许的符号有 我已经尝试过以下方法 d A Za z 0 9A Za z 以下完全符合您的要求 d d 0
  • Java - 同步方法导致程序大幅减慢

    我正在尝试了解线程和同步 我做了这个测试程序 public class Test static List
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 在 Java 5 及更高版本中迭代 java.util.Map 的所有键/值对的最简单方法是什么?

    在 Java 5 及更高版本中迭代 java util Map 的所有键 值对的最简单方法是什么 假设K是您的密钥类型 并且V是你的值类型 for Map Entry
  • 将传入字符串的 unicode 表示形式转换为 UTF-8?

    我正在读取一些已经转换为 html 样式 代码的数据 我现在需要将其转换回 UTF 8 字符以供查看 不幸的是我无法使用浏览器查看该字符串 我读过有关 java 中的转换的内容 似乎如果你有一个 uxxxx 字符串 那么编译器会为你转换 然
  • JSP 作为电子邮件模板

    有没有办法发送 MIME 电子邮件 其中电子邮件正文源自 JSP 我需要使用 Javamail 发送一封电子邮件 其中包含一个表格 我认为如果我可以使用 JSP 来完成所有格式设置和布局 将会很方便 在这个线程中 Java 电子邮件模板的建
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Maven `help: effective-pom` 只为单个项目生成,而不是所有项目

    我想为多模块构建中的所有子项目生成有效的 pom The help effective pom文档here http maven apache org plugins maven help plugin usage html The hel
  • 正则表达式检查确切的字符串是否存在,包括#

    新问题正如 Asaph 在上一个问题中所建议的 正则表达式检查确切的字符串是否存在 https stackoverflow com questions 2824291 regex to check if exact string exist
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器

随机推荐

  • 使用 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