Tag: regex

正则表达式疯狂:java.util.regex.Pattern matcher进入高CPU循环

注意:我已经看到了这个问题 ,但没有人回答它,所以它没有多大帮助。 奇怪的是,被标记为“可能重复”的问题已被删除(我第一次看到它。) 我们使用Pattern进行正则表达式validation时遇到问题。 我们的代码中没有发生这种情况,整个事情都发生在Spring Framework和Hibernate的validation中。 (Spring 3.2.1,Spring 3.1.1,Hibernate Validation 4.2.0) 此调用尝试使用@Valid注释validationSpring Framework @ModelAttribute注释: @RequestMapping(“/foo/bar”) public String doFooBar(@Valid @ModelAttribute(“fooBarForm”) FooBar form) validation的FooBar对象上的字段具有如下的@Pattern注释: public class FooBar implements Serializable{ @Length(min=0,max=22) @Pattern(regexp=ValidPattern.MYVALIDPATTERN) private String myField; 类FooBar还包含其他自定义对象,这些对象具有自己的级联validation。 ValidPattern.MYVALIDPATTERN中的validation模式如下所示: ^([\w\-,:'”\.\?+_#~!@#$&*() /]*|(?:™)*|(?:®)*|(?:©)*)*$ 调用此validation时,它可以在99.99%的时间内正常工作。 但至少每天一次,一个线程以某种方式与整个服务器“逃跑”,我们必须手动杀死它(否则最终导致堆栈溢出。) 当我们杀死线程时,我们发现线程已经卡在这个Pattern类中,反复做一些事情(下面的堆栈跟踪)。 关于如何修复(甚至陷阱)这个的任何想法? [Top of stack] java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) java.util.regex.Pattern$6.isSatisfiedBy(Pattern.java:4780) […]

无法映射正则表达式 – java.lang.IllegalArgumentException:模式段中的捕获组数

我在我的控制器中定义了以下方法: @RequestMapping(value = “/ajax/comments/post/{contentId:([apv]|ad)\\d+}”) public @ResponseBody ActionResult handlePostCommentRequest(HttpServletRequest request, Model model, @PathVariable(“contentId”) String assetId, @RequestParam(value = “nickName”, required = false, defaultValue = “Anonyymi”) String nickName, @RequestParam(value = “text”, required = false, defaultValue = “”) String text, @RequestParam(value = “createThread”, required = false, defaultValue = “false”) String createThread) { // some code… } 但是,当我执行以下HTTP请求时 – / […]

从java调用Perl,主要用于正则表达式匹配

我想从Java有效地执行Perl代码。 Perl的目的主要是执行正则表达式匹配(在某些测试中,Perl比Java更有效) 到目前为止,我发现了使用它的可能性: http : //metacpan.org/pod/Inline :: Java :: PerlInterpreter 另一种选择是在java中使用Runtime.exec()来调用Perl。 什么是最高性能的解决方案? 一个人比另一个人有优势吗? 我不能真正看到任何东西,除了PerlInterpreter仍然是实验性的,我不知道这是否会改变。 你知道从Java调用Perl的其他选项吗?

java regex – 捕获重复的组

我正在使用Java的正则表达式库。 我想根据以下格式validation字符串: 31,5,46,7,86(…) 数量不明。 我想确保该字符串中至少有一个数字,并且每两个数字用逗号分隔。 我也想从字符串中获取数字。 ( 注意:这只是一个简化的例子,string.split不会解决我的实际问题) 我写了以下正则表达式: ({[0-9]++)((?:,[0-9]++)*+) validation部分有效。 但是,当我尝试提取数字时,我得到2组: Group1: 31 Group2: ,5,46,7,86 regex101版本: https ://regex101.com/r/xJ5oQ6/3 有没有办法可以分别得到每个号码? 即结束集合: [31, 5, 46, 7, 86] 提前致谢。

如何使用String的replaceAll替换前面的某些字符

我需要替换文本中的一些单词,但我需要在替换策略中添加条件如下: 我想用word2替换word1 : String word1 = “word1”; String word2 = “word2”; 但我不想替换word1,如果它前面是word3 ,它是: String word3 = “word3.”; //with the dot at the ending 那就是如果文本是word3.word1我不想触摸它。 但我似乎无法使用String的replaceAll方法处理字边界 。 编辑: 如果word1的前缀或后缀为“ – ”字符,即-word1或word1-或-word1-,我也不想改变 任何帮助都会很明显。

如何在GWT中检查正则表达式的时间戳?

以下Timestamp格式的正则表达式是什么 YYYY-MM-DD HH:mm:ss.S YYYY-MM-DD HH:mm:ss.S AM/PM YYYY-MM-DD HH:mm:ss.S AM/PM Z YYYY-MM-DD HH:mm:ss.SZ 哪里 Y: year, M: Month, D: Date, H: hour, m: minute, s: second, S: Milisecond 3 digit only, Z: Time zone. 我正在以字符串格式获取时间戳格式,因此要validation它。 如何检查GWT中的正则表达式?

JAVAFx TextFieldvalidation十进制值

我试着限制十进制数字的文本字段,我已经在这里找到了整数validation的解决方案,但问题是我无法转换以下代码的十进制数,如324.23,4.3,4,2, 10.43。 (只允许1个小数点)。 vendorList_textField_remaining.textProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { if (!newValue.matches(“\\d*”)) { vendorList_textField_remaining.setText(newValue.replaceAll(“[^\\d||.]”, “”)); } } }); 我也在寻找替代解决方案。 谢谢。

无法使用response.sendRedirect重定向

我用Google搜索并搜索了几个小时如何在jsp或servlet中进行重定向。 但是,当我尝试应用它时,它不起作用。 我在jsp页面中的代码: 我知道从调试regexp工作,如果任何时候,articleId不是数字, if进入内部,但是当它到达response.sendRedirect时它实际上没有重定向。 在这种情况下,我是否会错过一些非常基础 提前致谢。

如何使用grep匹配空格或换行符

我想用一个单词grep一个文件,说“AAA”,它以空格或换行结束。 我知道如何单独写这个,如下所示,但在组合它们时遇到问题(从输出VVV AAA和AAA VVV的意义上说)。 $echo -e “AAA VVV \nVVV AAA\nBBB” | grep “AAA$” >VVV AAA $echo -e “AAA VVV \nVVV AAA\nBBB” | grep “AAA[[:space:]]” >AAA VVV 我尝试过使用[] ,但没有成功..

正则表达式匹配不是特定子字符串的东西

我正在寻找一个匹配字符串的正则表达式,该字符串以一个子字符串开头,并且不以某个子字符串结尾。 例: // Updated to be correct, thanks @Apocalisp ^foo.*(?<!bar)$ 应匹配任何以“foo”开头并且不以“bar”结尾的内容。 我知道[^ …]语法,但我找不到任何能为字符串而不是单个字符做的事情。 我特意尝试为Java的正则表达式做这个,但我已经遇到过这个问题,所以其他正则表达式引擎的答案也会很棒。 感谢@Kibbeevalidation这也适用于C#。