Tag: 正则表达式

使用值中的新行字符读取java中的.properties文件

我使用这样的属性定义了一个.properties文件 A=Hello World this is a dummy text B=Bye Bye World I am leaving to mars 从输入流加载资源后,我能够正确读取它并显示它们。 现在我想像这样定义这些属性 A= Hello World this is a dummy text B= Bye Bye World I am leaving to mars 但是它没有按预期加载它 A as Hello World 和 B as Bye Bye World. 我是否必须自己定义正则表达式并阅读此内容并将其填入地图中。 或者Properties.java是否有任何默认方式?

使用Regex修复Java中未转义的XML实体?

我有一些格式错误的XML,我必须解析。 无法解决上游问题。 (当前)问题是&符号并不总是正确转义,所以我需要将&转换为& 如果& 已经存在,我不想把它改为&amp; 。 一般来说,如果任何格式良好的实体已经存在,我不想破坏它。 我不认为通常可以知道可能出现在任何特定XML文档中的所有实体,所以我想要一个像&;这样的解决方案&; 保存完好。 其中是定义初始和结束之间的实体的一组字符; 。 特别是, <和> 不是表示XML元素的文字。 现在,在解析时,如果我看到&我不知道我是否会遇到; , 一个 (空间),行尾或其他。 因此,我认为我必须记住因为我outlook一个会告诉我如何处理原始& 。 我认为我需要Push Down Automaton的强大function才能做到这一点,我认为有限状态机不会因为我认为是内存需求而起作用 – 这是正确的吗? 如果我需要PDA,那么在对String.replaceAll(String, String)的调用中的正则表达式将不起作用。 或者是否有可以解决此问题的Java正则表达式? 请记住:每行可以有多个替换。 (我知道这个问题 ,但它没有提供我正在寻找的答案。)

从通配符到正则表达式

我想允许两个主要的通配符? 和*来过滤我的数据。 以下是我现在正在做的事情(正如我在许多网站上看到的): public boolean contains(String data, String filter) { if(data == null || data.isEmpty()) { return false; } String regex = filter.replace(“.”, “[.]”) .replace(“?”, “.”) .replace(“*”, “.*”); return Pattern.matches(regex, data); } 但是我们不应该逃避所有其他的正则表达式特殊字符,比如| 或(等等?还有,也许我们可以保留?和*如果它们前面有一个\ ?例如,类似于: filter.replaceAll(“([$|\\[\\]{}(),.+^-])”, “\\\\$1”) // 1. escape regex special chars, but ?, * and \ .replaceAll(“([^\\\\]|^)\\?”, “$1.”) // 2. replace any ? […]

如何使用XSLT v1.0插入文本而不是使用XSLT v2.0正则表达式?

我有一个xml文件,它描述(除其他外)具有描述完全限定的java类名的属性值的元素。 我正在尝试编写一个XSLT转换来修改此文件中描述的类名,这样(例如) com.example.MyClass ocurrances将变为com.example.MockMyClass 。 以下是原始文件片段上下文中的示例: templates/MyTemplate.vm 我希望结果如下: templates/MyTemplate.vm 我正在使用Java JAXP API进行这种转换,并编写了一个可爱的符合XSLT 2.0的regex例程来获得我想要的结果,但却发现Java 5不支持正则表达式支持所需的XSLT 2.0。 所以我的问题是,使用古老的JAXP XSLT 1.0 API实现这一目标的最佳方法是什么? 也就是说,不使用正则表达式。 我寻找类似的问题,但反向引用正则表达式组的要求似乎使这个问题变得棘手。 这个问题是一个开始,但我需要在匹配的字符串中插入文本,而不是仅仅替换 。 作为参考,这是我的正则表达式(XSLT 2.0)尝试: Mock

正则表达式进入无限循环

我正在解析表单的(种类)名称: Parus Ater H. sapiens T. rex Tyr. rex 通常有两个术语(二项式)但有时有3个或更多。 Troglodytes troglodytes troglodytes E. rubecula sensu stricto 我写 [AZ][az]*\.?\s+[az][az]+(\s*[az]+)* 它大部分时间都有效,但偶尔会进入无限循环。 需要一些时间来追踪它是在正则表达式匹配中,然后我意识到这是一个错字,我应该写 [AZ][az]*\.?\s+[az][az]+(\s+[az]+)* 表现得当。 我的问题是: 为什么这个循环发生? 有没有办法在运行程序之前检查类似的正则表达式错误? 否则,在分发prgram之前可能难以捕获它们并导致问题。 [注意:对于物种,我不需要更一般的表达式 – 对于物种名称,有一个正式的100+行正则表达式规范 – 这只是一个初始filter]。 注意:问题出现了,因为虽然大多数名称被精确地提取为2或偶尔3/4术语(因为它们用斜体字表示),但是有一些误报(例如”Homo sapiens lives in big cities like London” )并且匹配失败在“L”。] 注意:在调试中我发现正则表达式经常完成但速度很慢(例如在较短的目标字符串上)。 通过病理案例我发现了这个错误是很有价值的。 我学到了一个重要的教训!

Java与javascript正则表达式匹配

当我做一个简单的测试时,我正在刷java中的正则表达式 Pattern.matches(“q”, “Iraq”); //false “Iraq”.matches(“q”); //false 但在javascript中 /q/.test(“Iraq”); //true “Iraq”.match(“q”); //[“q”] (which is truthy) 这里发生了什么? 我可以使我的java正则表达式模式“q”表现与javascript相同吗?

如何根据标点符号和空格分割字符串?

我有一个String ,我想根据标点符号和空格分割。 split()方法的正则表达式参数应该是什么?

Java Regex:如何匹配一个或多个空格字符

如何在Java正则表达式中匹配多个空格字符? 我有一个正在尝试匹配的正则表达式。 当我有两个或更多空格字符时,正则表达式失败。 public static void main(String[] args) { String pattern = “\\b(fruit)\\s+([^a]+\\w+)\\b”; //Match ‘fruit’ not followed by a word that begins with ‘a’ String str = “fruit apple”; //One space character will not be matched String str_fail = “fruit apple”; //Two space characters will be matched System.out.println(preg_match(pattern,str)); //False (Thats what I want) System.out.println(preg_match(pattern,str_fail)); //True […]

正则表达式匹配java中的变量声明

我想解析变量声明语句并获取变量名称。 我正在做以下事情 String var = “private String ipaddress;”; 我正在使用下面的正则表达式匹配上面的字符串 .*private\\s+([az]*)\\s+([a-z0-9_]*); 这是行不通的。 它说找不到匹配任何人都可以帮忙。

java比较两个Pattern对象

有没有一种比较两个Pattern对象的简单方法? 我有一个Pattern ,使用正则表达式”//”编译,以检查代码中的注释。 由于有几个正则表达式来描述注释,我想找到一种方法来区分它们。 如何做呢? Pattern类不实现equals方法。