草庐IT

Java replaceAll 正则表达式错误

我想把所有的“*”都变成“.*”,除了“\*”Stringregex01="\\*toto".replaceAll("[^\\\\]\\*",".*");assertTrue("*toto".matches(regex01));//TrueStringregex02="toto*".replaceAll("[^\\\\]\\*",".*");assertTrue("tototo".matches(regex02));//TrueStringregex03="*toto".replaceAll("[^\\\\]\\*",".*");assertTrue("tototo".matches(

java - 正则表达式:忽略组的顺序

我有一段文字:randomtext1150,25USDrandomtext和一个简单的正则表达式来提取不同货币的金额:(((\d+)(,?\s?|.)(\d{1,2}))\s?(PLN|EUR|USD|CHF|GBP))这给了我这些组:1150,25美元1150,251150,25美元但是,数字和货币可能会互换位置:randomtextUSD1150,25randomtext或randomtextUSD1150,25randomtext我应该如何改进我的正则表达式以满足该条件而不重复整个组(AB|BA),同时保持当前分组? 最佳答案

java - 从数学表达式中提取操作数的正则表达式

没有关于SO的问题可以解决我的特定问题。我对正则表达式知之甚少。为此,我正在使用Regex类在Java中构建表达式解析器。我想从表达式中提取操作数、参数、运算符、符号和函数名称,然后保存到ArrayList。目前我正在使用这个逻辑Stringstring="2!+atan2(3+9,2+3)-2*PI+3/3-9-12%3*sin(9-9)+(2+6/2)"//ThisisjustfortestingpurposelateronitwillbeprovidedbyuserListres=newArrayList();Patternpattern=Pattern.compile((\\Q

java - 如何从字符串中提取短语

我如何为两者拉出“16”BarFooBar:Foo8:16FooBarBarfoobarz8:16FooBarBarfoobarz这是我尝试过的StringV,Line="BarFooBar:Foo8:16FooBarBarfoobarz";V=Line.substring(Line.indexOf("([0-9]+:[0-9]+)+")+1);V=V.substring(V.indexOf(":")+1,V.indexOf(""));System.out.println(V);这是我得到的错误Exceptioninthread"main"java.lang.StringIndexOu

java - 从 Clojure 中的字符串解析命令行参数

我处于这样一种情况,我需要以与在命令行上提供给Java/Clojure应用程序时相同的方式解析字符串中的参数。例如,我需要将"foo\"barbaz\"'fooybarish'foo"变成("foo""barbaz""fooybarish""foo")。我很好奇是否有一种方法可以使用Java或Clojure用来执行此操作的解析器。我不反对使用正则表达式,但我不喜欢正则表达式,如果我尝试为此编写一个正则表达式,我会失败的。有什么想法吗? 最佳答案 更新了一个更复杂的新版本。这在官方上是荒谬的;下一次迭代将使用适当的解析器(或c.c.m

Java Regex 从 HTML anchor (<a>...</a>) 标签获取文本

我正在尝试获取某个标签内的文本。所以如果我有:Found我希望能够检索Found文本。我正在尝试使用正则表达式来做到这一点。如果我能做到保持不变,但事实并非如此。到目前为止我有这个:PatterntitleFinder=Pattern.compile(".*[a-zA-Z0-9]*([a-zA-Z0-9]*).*");我认为最后两部分-([a-zA-Z0-9]*).*-没问题,但我不知道第一部分该做什么。 最佳答案 正如他们所说,不要使用正则表达式来解析HTML。不过,如果您意识到这些缺点,您可能会侥幸逃脱。尝试Patterntit

java - 使用 Java 进行源代码检测

知道如何在不查看文件扩展名或使用非常长的自制正则表达式的情况下使用Java检测文本文件中的源代码(Java、C#、SQL等)吗?也许已经有一些工具可以完成这项工作? 最佳答案 LinguistWeusethislibraryatGitHubtodetectbloblanguages,highlightcode,ignorebinaryfiles,suppressgeneratedfilesindiffsandgeneratelanguagebreakdowngraphs.不幸的是它是用Ruby写的,也许JRuby能处理吗?

c# - 正则表达式在 C# 中匹配,但在 java 中不匹配

我有以下正则表达式(很长,我知道):(?-mix:((?-mix:(?-mix:\{\%).*?(?-mix:\%\})|(?-mix:\{\{).*?(?-mix:\}\}?))|(?-mix:\{\{|\{\%)))我用来分割一个字符串。它在C#中正确匹配,但是当我将代码移至Java时,它不匹配。此正则表达式是否有任何仅适用于C#的特殊功能?源代码生成为:Stringsource=Pattern.quote("{%assignfoo=values%}.{{foo[0]}}.");在C#中它是:stringsource=@"{%assignfoo=values%}.{{foo[0]}

java - 用于匹配包含 <n> 个字符的字符串的简单正则表达式

我正在编写这个正则表达式,因为我需要一种方法来查找没有n个点的字符串,我虽然负面展望是最好的选择,但到目前为止我的正则表达式是:"^(?!\\.{3})$"我读这个的方式是,在字符串的开始和结束之间,可以有或多于或少于3个点,但不能有3个。令我惊讶的是,这与hello.here.im.greetings不匹配相反,我希望匹配。我正在用Java编写,所以它有点像Perl的味道,我没有转义花括号,因为它在Java中不需要有什么建议吗? 最佳答案 你在正确的轨道上:"^(?!(?:[^.]*\\.){3}[^.]*$)"将按预期工作。你的

java - 拆分复杂的字符串

我有这样一个字符串:1|f1||f2我想用'|'分割通过Java但我需要忽略和/>.我怎样才能做到这一点?这似乎是一个正则表达式方法上面的字符串应该拆分成:1f1a1|a2a3|a4f2 最佳答案 split方法使用正则表达式作为参数和|在正则表达式中是特殊字符,表示或。使其成为正常字符位置\\在喜欢之前"yourString".split("\\|");在您的情况下,您还需要look-ahead机制让你的正则表达式看起来像/>)?\\|(?=[^>]*(它将split于/>|可选/>之前或在它之后但只有在没有>的情况下之后直到或输