Tag: 正则表达式

删除所有空行

我认为这并不难,但我想用String.replaceAll删除所有空行(或者只包含Java中的空格和制表符的行)。 我的正则表达式如下: s = s.replaceAll (“^[ |\t]*\n$”, “”); 但它不起作用。 我环顾四周,但只发现正则表达式删除没有空格或标签的空行。

pattern.matcher()vs pattern.matches()

我想知道为什么java regex pattern.matcher()和pattern.matches()的结果在提供相同的正则表达式和相同的字符串时会有所不同 String str = “hello+”; Pattern pattern = Pattern.compile(“\\+”); Matcher matcher = pattern.matcher(str); while (matcher.find()) { System.out.println(“I found the text ” + matcher.group() + ” starting at ” + “index ” + matcher.start() + ” and ending at index ” + matcher.end()); } System.out.println(java.util.regex.Pattern.matches(“\\+”, str)); 以上结果是: I found the text + starting at […]

Java String.split()正则表达式

我有一个字符串: String str = “a + b – c * d / e g >= h <= i == j"; 我想在所有运算符上拆分字符串,但在数组中包含运算符,因此生成的数组如下所示: [a , +, b , -, c , *, d , /, e , , g , >=, h , <=, i , ==, j] 我现在有这个: public static void main(String[] args) { String str […]

用于validation全名的Java Regex仅允许空格和字母

我希望正则表达式只validation字母和空格。 基本上这是validation全名。 例如: 史蒂夫柯林斯先生或史蒂夫柯林斯我试过这个正则表达式。 “[1 – ZA-Z] + \。?” 但没有工作。 有人可以帮助我,请使用Java。 public static boolean validateLetters(String txt) { String regx = “[a-zA-Z]+\\.?”; Pattern pattern = Pattern.compile(regx,Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(txt); return matcher.find(); }

为什么这个正则表达式在Java中没有像预期的那样工作?

琐碎的正则表达式问题(答案很可能是特定于Java的): “#This is a comment in a file”.matches(“^#”) 这返回false。 据我所知, ^表示它总是意味着什么, #没有特殊含义,所以我将^#翻译为字符串开头的“A”#’。 哪个应该匹配。 在Perl中它确实如此: perl -e “print ‘#This is a comment’=~/^#/;” 打印“1”。 所以我很确定答案是Java特有的。 有人请赐教吗? 谢谢。

如何使用正则表达式过滤掉不需要的字符的字符串?

基本上,我想知道是否有一个方便的类或方法来过滤不需要的字符串。 方法的输出应该是’clean’字符串。 即: String dirtyString = “This contains spaces which are not allowed” String result = cleaner.getCleanedString(dirtyString); 期待结果将是: “Thiscontainsspaceswhicharenotallowed” 一个更好的例子: String reallyDirty = ” this*is#a*&very_dirty&String” String result = cleaner.getCleanedString(dirtyString); 我希望结果如下: “thisisaverydirtyString” 因为,我让清洁工知道”,’*’,’#’,’&’和’_’是脏字符。 我可以通过使用白色/黑色列表字符来解决它。 但我不想重新发明轮子。 我想知道是否已经有这样的事情可以使用正则表达式“清理”字符串。 而不是自己写这个。 另外:如果您认为清洁弦乐可以以不同/更好的方式完成,那么我当然也是耳朵 另外一个补充: – 它不仅适用于空间,也适用于任何类型的角色。

Java-提取两个特殊字符之间的字符串的一部分

我一直试图找出如何在两个特殊字符之间提取字符串的一部分’和’我一直在研究正则表达式,但坦率地说我无法理解它。 Java代码中的示例: String str=”21*90’89\””; 我想退出89 一般来说,我只想知道如何在两个特定字符之间提取字符串的一部分。 另外,如果知道如何从一开始就将部分字符串提取到特定字符(例如21),那将会很高兴。

这个正则表达式不应该发生灾难性的回溯

有人可以解释为什么Java的正则表达式引擎会在这个正则表达式上进入灾难性的回溯模式吗? 根据我的判断,每次交替都是互相排斥的。 ^(?:[^’\”\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}][^\”\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}]*| \”(?:[^\”]+|\”\”)+\”| ‘(?:[^’]+|”)+’) 文字: ‘pão de açúcar itaucard mastercard platinum SUSTENTABILIDADE]) 为一些替换添加所有格匹配修复了问题,但我不知道为什么 – Java的正则表达式lib必须非常错误才能在互斥的分支上回溯。 ^(?:[^’\”\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}][^\”\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}]*| \”(?:[^\”]++|\”\”)++\”| ‘(?:[^’]++|”)++’)

Java替换正则表达式无法正常工作

为什么这行代码不起作用? 它应该用什么都不替换所有的标点符号。 m = m.replace(“[\\?\\.;:’\”]”, “”) 在java中执行此行后,m将不会更改,即使它包含标点符号。 为什么?

高级通配符映射在Prepare()方法中找不到参数

从文档中: Struts2的高级通配符映射 : 高级通配符 从2.1.9+开始,可以在动作名称中定义正则表达式。 要使用这种forms的通配符,必须设置以下常量: 正则表达式可以有两种forms,最简单的是{FIELD_NAME} ,在这种情况下,操作中具有FIELD_NAME的字段将填充匹配的文本,例如: /books/content.jsp 在此示例中,如果请求url /fiction/content/Frankenstein ,则BookAction的字段“ type ”将设置为“ fiction ”,字段“ title ”将设置为“ Frankenstein ”。 这绝对是好的,如果你在常规的Action方法中读取这些变量就行了,如execute() 。 如果您尝试从prepare()方法中读取它们,则它们为null,因为PrepareInterceptor在其他负责设置参数的Interceptor之前运行; 解决此问题的常用方法是使用适当的拦截器堆栈来获取在执行prepare()方法时已经填充的参数… 从文档: ParamsPrepareParamStack 这适用于来自页面的参数,但它不适用于Advanced Wildcards设置的参数 。 它们仍然是空的。 如何解决这个问题?