如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?
我从表示某种模型语言的输入生成Java类。 创建输入模型的客户并不关心Java,所以有时我会得到此类类的名称: 1) 结构+如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?,java,regex,replace,non-alphanumeric,Java,Regex,Replace,Non Alphanumeric,我从表示某种模型语言的输入生成Java类。 创建输入模型的客户并不关心Java,所以有时我会得到此类类的名称: 1) 结构+ 2) 控制器: (三)* 显然,这是不可编译的。 我需要一些很好的正则表达式来生成如下内容: [^A-Za-z0-9] 1) 结构更多信息 2) 控制器前缀 3) 全部 你能帮我整理一下这个输入的正则表达式吗 我想在中间加下划线,并用有意义且有效的符号替换非字母符号。谢谢很显然,正则表达式本身无法取代某些东西。您需要一些东西来匹配带有描述性字符串的正则表达式。但匹配任何
2) 控制器:
(三)* 显然,这是不可编译的。 我需要一些很好的正则表达式来生成如下内容:
[^A-Za-z0-9]
1) 结构更多信息2) 控制器前缀
3) 全部 你能帮我整理一下这个输入的正则表达式吗
我想在中间加下划线,并用有意义且有效的符号替换非字母符号。谢谢很显然,正则表达式本身无法取代某些东西。您需要一些东西来匹配带有描述性字符串的正则表达式。但匹配任何非字母数字字符的简单正则表达式如下:
[^A-Za-z0-9]
只有一个正则表达式无法做到这一点。我想,我可以从以下内容开始:
String className=“Struct+”;字符串模式=“[^A-Za-z0-9]”;System.out.println(className.replaceAll(模式,“\u nonalpha”)代码>当然,这将使它们成为有效的类名。但它并不能真正描述最初的正则表达式操作符是什么。例如,“Struct+”将为您提供“Struct\u nonalpha”“Struct*”将为您提供相同的结果,如果这不是问题,您已经找到了一个简单的解决方案;)是的,我同意你的限制。我将与客户讨论这一点,并最终尝试改进它。无论如何,谢谢你:)你也可以检查你希望找到的每一个可能的操作员。因此,您可以使用className.replaceAll(“\\*”,“\u all”)
将所有星号替换为“\u all”。(“\\”用于转义*而不是将其解释为正则表达式)。你必须对每个角色都这样做。没错,我会试试的。到目前为止,我只找到了这三个,+,:和*