java - 如何使用正则表达式删除字符之间的符号

标签 java regex string

我有一个字符串 a="a+f(kp-ol)-g(jp-nl)+h(jo-nk)-b+e(kp-ol)-g(ip-ml)+h(io-mk)+c-e(jp-nl)"

现在我想删除字符之间的 +/- 以使字符看起来像相乘。 (IE) 在 dis 字符串中,将 a+f 转换为 af..删除中间的 +...整个字符串类似。

任何人都可以建议使用正则表达式的解决方案

最佳答案

([a-zA-Z])[+-](?=[a-zA-Z])(?![^(]*\))

参见demo 。替换为 $1

这会捕获任何 +- 符号之前的字母,并使用前瞻来断言“它后面有一个字母”。为了确保它不在括号内,放置了另一个前瞻,断言“不应有 ),其后面没有 (”。捕获的字母在存储在 $1 中时被替换为后词。

您可以使用正向回顾而不是捕获组。

(?<=[a-zA-Z])[+-](?=[a-zA-Z])(?![^()]*\))

Java 正则表达式是,

"(?<=[a-zA-Z])[+-](?=[a-zA-Z])(?![^()]*\\))"

然后将匹配的+-符号替换为空字符串。

关于java - 如何使用正则表达式删除字符之间的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378922/

相关文章:

javascript - Websocket 帧大小限制

java - 比较两个数组中的数据值

java - 如何在运行时为 Servlet 或 JSP 应用程序中的现有文本框设置值?

java - xuggle jar 文件不能作为依赖 jar

java - 为什么我的 editText 在 android 中没有显示正确的输出?

java - String.valueOf() 与 Object.toString()

java - 检测到符号后删除单词

regex - 使用 Sublime Text 确保 LaTeX 文档中每行一个句子

python - 在 Python 中,如何使用正则表达式作为分隔符连接字符串列表而不用反斜杠字符转义

swift - 需要检查给定数组中的大括号是否平衡