Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?_Java_Regex_Replace_Non Alphanumeric - Fatal编程技术网

如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?

如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?,java,regex,replace,non-alphanumeric,Java,Regex,Replace,Non Alphanumeric,我从表示某种模型语言的输入生成Java类。 创建输入模型的客户并不关心Java,所以有时我会得到此类类的名称: 1) 结构+ 2) 控制器: (三)* 显然,这是不可编译的。 我需要一些很好的正则表达式来生成如下内容: [^A-Za-z0-9] 1) 结构更多信息 2) 控制器前缀 3) 全部 你能帮我整理一下这个输入的正则表达式吗 我想在中间加下划线,并用有意义且有效的符号替换非字母符号。谢谢很显然,正则表达式本身无法取代某些东西。您需要一些东西来匹配带有描述性字符串的正则表达式。但匹配任何

我从表示某种模型语言的输入生成Java类。 创建输入模型的客户并不关心Java,所以有时我会得到此类类的名称:

1) 结构+
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”。(“\\”用于转义*而不是将其解释为正则表达式)。你必须对每个角色都这样做。没错,我会试试的。到目前为止,我只找到了这三个,+,:和*