【发布时间】:2019-11-18 16:01:36
【问题描述】:
我有
String prog = "public class HelloWorld {\n" + "public static void main.(String[] args) int b = 0.5 \n"
(这里字符串中main后面的点(.)是有目的的)
这里我需要将字符串作为一个整体分成以下组件 -
- 公开
- 类
- HelloWorld
- {
- 公开
- 静态
- 无效
- 主要
- .
- (
- 字符串
- [
- ]
- 参数
- )
- int
- b
- =
- 0.5
数字和 .仅供参考(即 1. , 2. , 11. )。输出必须是组件
我已将 split() 与 \\s+ 一起使用,并向前看和向后看符号的断言:-
(+-*/[);].
String[] words = prog.split("\\\s+|((?<=])|(?=]))|((?<=\\[)|(?=\\[))|((?<=\\()|(?=\\())|((?<=\\))|(?=\\)))|((?<=[-+*/=;.])|(?=[-+*/=;.]))");
请原谅复杂性。任何压缩都将不胜感激。
它可以很好地提供组件,但是在尝试拆分 main 时。进入主要和 .在保持 0.5 不变的同时,我使用的表达式 ((?/=;.])|(?=[-+/=;.])) 不起作用。
它分隔主要。进入主要和 .但也是 0.5 到 0 和 .和 5
我需要 0.5 保持为 0.5 ,即 double 保留为 double,同时拆分 main。进入主要和 .
请提供一个正则表达式来分隔句点和字符串,但保持双整数不变。
【问题讨论】:
-
不清楚您打算在这里做什么,我的意思是您要解决的问题。对于正则表达式调整,有在线工具。这是一个regexr.com
-
public static void main.main 之后的点对我来说似乎很可疑。是不是打错字了? -
点不是错字,是故意的
-
我想再举一个例子:- String prog = "System.out.println (0.5) "。我需要输出使得有八个字符串:- System , . , 出去, 。 , println, ( , 0.5, ) 我希望 0.5 保持原样,但是当句点不在数字之间时,作为单独的字符串。希望这能澄清我的问题。道歉并谢谢你