我有一个字符串 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/