Tag: regex

java – 正则表达式使用空格分割字符串但不考虑双引号或单引号

我想使用空格拆分字符串,但不考虑双引号或单引号。 我没有尝试使用Regex在没有单引号或双引号的情况下使用空格分割字符串,但在某些情况下它失败了。 Input : It is a “beautiful day”‘but i’ cannot “see it” 输出应该是 It is a “beautiful day”‘but i’ cannot “see it” 上面链接中的正则表达式导致了 It is a “beautiful day” ‘but i’ cannot “see it” 我想要”beautiful day”‘but i’在一条线上。 有人可以帮我写正确的正则表达式吗?

正则表达式在csv中找到缺少的双引号

我们正在处理包含非闭合双引号条目的行的csv文件。 这些炸毁了csv解析器,所以我试图整理一个正则表达式,它将识别这些行,以便我们可以在尝试处理它们之前从文件中删除它们。 在下面的示例中,csv解析器到达第2行并包含第3行中第一个双引号之前的所有内容,然后尝试关闭令牌然后爆炸,因为在“关闭”双引号之后有非空格字符下一个逗号。 示例第1行,一些数据,“好行”,处理得很好,很开心 示例第2行,一些数据,“坏线,处理不良,不开心 示例第3行,一些数据,“好行”,在此之前死亡,不开心 我想做的事情如下: .*,”[^(“,)]*[\r\n] 我们的想法是在行结束之前找到一行后跟“没有实例”的任何内容。 然而,序列的否定是行不通的。 怎么样这样呢? 注意: 由于人们一直建议基本上检查偶数双引号,因此值得注意的是,单个双引号csv条目可能包含独立双引号(例如……,“Measurement:1’2”“,…) 。

用Java标记中缀字符串

我正在Java中实现Shunting Yard算法 ,作为我的AP计算机科学课程的一个副项目。 我在Javascript中实现了一个简单的算法,只有基本的算术表达式(加法,减法,乘法,除法,取幂)。 要将其拆分为数组,我所做的是找到每个运算符( +-*/^ ),以及数字和括号,然后在它们周围放置一个空格,然后将其拆分为数组。 例如,中缀字符串4+(3+2)将被制成4 + ( 3 + 2 ) ,然后在空格上分割。 但是,我觉得这种方法非常慢,当你开始添加正弦,余弦,正切,绝对值等数学函数时,它实现起来越来越难以实现。 将像sin(4+3)-8这样的字符串分成数组[“sin”,”(” 4,”+”,3,”)”,”-“,8]什么? 我可以使用正则表达式,但我并不是很了解它们,我正在努力学习它们,所以如果这对他们来说是最好的解决方案,请问回答者能解释它的作用吗?

如何在web.xml或Guice servlet模块中排除/重定向某些url模式?

我需要使用url模式”/*”为我的主应用程序提供服务,以便此模式与Servlet匹配。 我遇到的问题是现在位于“/css/all.css”,“/ images /”等的所有css文件和图像都经过这个Servlet,这是不可取的。 我希望直接访问这些文件。 处理这种情况的更好方法是什么? 注意:我使用Guice的Servlet模块来配置模式。 谢谢!

如何使用.properties文件或数据库中的正则表达式指定Hibernate“@Pattern”注释

情况 :我想基于用户属性执行Hibernatevalidation(根据用户的帐户数据允许输入的不同validation规则) – 我认为必须可以使用.properties文件来指定特定的正则表达式,但是我无法弄清楚出了什么问题: 我当前指定validation正则表达式的方法从特定接口文件中的常量中拉出该正则表达式(将所有内容保持在一起)并将其作为常量插入到每个变量的@Pattern()注释中 – 例如,对于变量workPhone : @Column(name = “WORK_PHONE”) @NotEmpty(message = “{ContactInfo.workPhone.notEmpty}”) @Pattern(regexp = PHONE_NUMBER_PATTERN_SL, message = “{ContactInfo.workPhone.regexp.msg}”) @Size(max = 10, message = “{ContactInfo.workPhone.size}”) protected String workPhone; …正则表达式存储在static final String PHONE_NUMBER_PATTERN_SL ,所有{ContactInfo.workPhone…}调用都来自.properties文件: ContactInfo.workPhone.notEmpty=Please enter your phone number. ContactInfo.workPhone.regexp.msg=Invalid characters entered in phone. Use this format XXX-XXX-XXXX. ContactInfo.workPhone.size=Phone can not be longer than 10 […]

Java中的replace()和replaceAll()

以下代码使用Java中String类的replace()方法。 String a = “abc/xyz”; System.out.println(a.replace(“/”, “\\”)); /在给定的String中, a被替换为\ 。 如果我们使用replaceAll()方法,如下所示是同样的错误。 System.out.println(a.replaceAll(“/”, “\\”)); 它会导致抛出exceptionjava.lang.StringIndexOutOfBoundsException 。 它需要两个额外的反斜杠\ ,如下所示,因为replaceAll()使用正则表达式,而不是replace()方法的情况。 System.out.println(a.replaceAll(“/”, “\\\\”)); 唯一的问题是为什么这个方法只使用两个斜杠,如a.replaceAll(“/”, “\\”)抛出java.lang.StringIndexOutOfBoundsException ? 另一方面, split()方法最初发出一个waring Invalid regular expression: Unexpected internal error (我正在使用NetBeans 6.9.1)。 String b=”abc\\xyz”; System.out.println(b.split(“\\”)[0]+b.split(“\\”)[1]); //Issues a warning as specified. 尝试运行此操作会导致抛出exceptionjava.util.regex.PatternSyntaxException 。 因为它使用像replaceAll()这样的正则表达式,所以它需要四个反斜杠。 System.out.println(b.split(“\\\\”)[0]+b.split(“\\\\”)[1]); 为什么a.replaceAll(“/”, “\\\\”); 如前面的情况一样,即使它的模式无效,也不会发出这样的警告或运行时exception?

如何将字符串拆分为shell之类的参数?

这是一个参数解析器列表,但它们接受字符串数组。 现在,我有一个字符串 -s -d “String with space” -d “string with \” escape \n the next line” 我想将字符串拆分为 -s -d String with space -d string with ” escape the next line (This is one string with \n) 有没有工具可以做到这一点? 也可以看看 分串上的空间-除了-如果引号间,即性治疗问候世界-作为 含有分裂-A-字符串的命令行参数-进入-一个串入-java的 EDTIED 张贴作为答案。

Java相当于Perl的///运算符?

我有一些代码,我正在从Perl转换为Java。 它大量使用正则表达式,包括s///运算符。 我已经使用Perl很长一段时间了,我仍然习惯于Java的做事方式。 特别是,Strings似乎更难以使用。 有没有人知道或者有一个完全实现s///的Java函数? 所以它可以处理这样的事情,例如: $newString =~ s/(\bi’?\b)/\U$1/g; (也许不是一个很好的例子,但你明白了。)谢谢。

Java RegEx匹配任何内容但是文字字符串’NIL’或’nil’

好,朋友们。 这是一个Java面试类型的问题,似乎已经让一些非常聪明的人难过了。 他们实际上需要这个用于生产代码,因此它不仅仅是一个采访益智游戏。 他们需要一个Java中的正则表达式,如果字符串文字不是3个字母的单词NIL,则返回true。 测试需要不区分大小写,RegEx本身必须完成所有工作。 因此,RegEx应该拒绝NIL,零,NiL,nIL等。 但是,它应该接受:nile,anil,will,zappa-nil-a和空字符串。 编写一个简单的RegEx需要多少Java开发人员? 显然很多!

假设Unicode和不区分大小写,模式“..”是否匹配“FfIsS”?

这听起来像个笑话,但我可以certificate这一点。 假设: Dot匹配任何单个字符。 当且仅当它与s.toUpperCase()匹配时,不区分大小写的模式匹配s 。 以下所有内容都非常符合逻辑并且在Java中保留: “ffi”.matches(“.”) .matse “ffi”.matches(“.”) LATIN SMALL LIGATURE FFI(U + FB03)是一个字符,所以必须匹配 “ß”.matches(“.”) LATIN SMALL LETTER SHARP S(U + 00DF)是一个字符,因此它必须匹配 “ffi”.toUpperCase().equals(“FFI”)的Unicode标准(没有资本连接FFI) “ß”.toUpperCase().equals(“SS”)的Unicode标准(有一个大写的S,但它没有被使用) “FfI”.toUpperCase().equals(“FFI”)显然”FfI”.toUpperCase().equals(“FFI”) “sS”.toUpperCase.equals(“SS”)显然 因此,假设正则表达式中的第一个点代表ffi而第二个代表ß ,则正则表达式必须匹配“FFISS”,并且因为不区分大小写也是“FfIsS”。 我真的希望有一些错误,否则正则表达式会变得非常不可用。 问题: 我的“证据”有什么问题? 如果我的第二个假设不成立,那么“不区分大小写”究竟意味着什么?