举例说明:
"legitString" RETURNS "legitString"
"legitString blabla" RETURNS "legitString"
"legitString PoisonousSuffix" RETURNS "legitString"
"legitStringPoisonousSuffix" RETURNS no match
我需要按照特定的模式从文件中解析尽可能多的引用。但是文件的某些行被截断,并且不总是相同的长度(!)。
幸运的是,当这种情况发生时,该行以“>>”结束。我必须假设引用被截断,我必须丢弃它。因此,在我的情况下,“>>$”将是有毒的后缀。另一方面,如果“>>”位于文本中间,我应该像通常那样安全地提取引用。(引用以数字结尾,但每次的数字数可能不同,所以我不能使用它。)
所以在我的例子中:
"REF" RETURNS "REF"
"REF >>" RETURNS "REF"
"REF>>" RETURNS nothing
"REF>> bla " RETURNS "REF" // because in my case, the poison is only poisonous if in the end
我已经看到:https://stackoverflow.com/tags/regex/info,但我尝试了语法
myRegex(?!>>$)
而且看起来不对。当行以“>>”结束时,它会截断引用的最后一个合法数字,这是最糟糕的情况:一个损坏的引用正在通过。
我已经看到:Regex用于不以给定后缀结尾的字符串,但是:
myRegex(?:(?!>>).).$
拒绝合法引用。
\b(SWN-)?WZ-SB\d{2}(-\d{2}){2}-[A-Z]?\d*
"SWN-WZ-SB00-49-03-C11>> bla"
"SWN-WZ-SB00-49-03-C11 >> "
"SWN-WZ-SB00-49-03-C11 >>"
"SWN-WZ-SB00-49-03-C11 >> bla"
"SWN-WZ-SB00-49-03-C11>>"
谢谢
正确的方法是使用条件句。下面是我使用的模式。
(?(?![\w-]+>>$)(?:([^\s>]*)(?:.*))([^\w\w]))
我将为你提供一个细目:
(?...)
是如果
有条件
(?![\w-]+>>$)
检查字符串是否包含有毒后缀
([^\n>]*)(?:.*))
捕获所有内容,直到您运行到空格或
([^\w\w])
不捕获任何内容。
所以if条件的语法是(?if(condition)thenelse)。此模式的作用是,如果字符串不包含后缀,则返回字符串直到第一个空格,但如果包含,则不匹配任何内容。
演示
问题内容: 我有一个正则表达式,用于匹配表格的表达式 这个正则表达式看起来像: 正如您在本演示中看到的那样,这实际上很好,并且与我想要的匹配 但是:D(黄油来了) 我想通过使其更易读和“紧凑”来优化正则表达式本身。我搜索了如何执行此操作,然后找到了一种称为反向引用的名称,您可以在其中命名捕获组,然后像下面这样引用它们: 我在其中命名了捕获表达式左侧的组,后来我将其引用为,现在的 问题 是,仅在表达
或者更好的方法是遍历它,为参数的每个索引获取TRUE或FALSE标志 我只知道如何使用matcher.find()进行循环,如果有任何帮助,我将不胜感激
我试图创建一个正则表达式模式来匹配每个(内容*),但是该模式可以在另一个((内容)(内容))中找到。我尝试了,但这返回了外部的。 例如:字符串应返回: 第一个匹配: 第二个匹配: 编辑: 我试过:但在?R(未知标志)附近出现错误
我需要一个正则表达式(将在ZF2路由中使用,我相信它使用php的preg_match),匹配除特定字符串之外的任何内容。 比如:我需要搭配除了“红”、“绿”、“蓝”之外的任何东西。 我目前有正则表达式: 在最后一种情况下,正则表达式的行为不像我希望的那样。它应该与“redtest”匹配,因为“redtest”不是(“红色”、“绿色”或“蓝色”)。 有关于如何修复正则表达式的想法吗?
给定一个字符串 在一次过程中匹配和提取字符串的3个部分的最佳Java正则表达式是什么? 第一个逗号之前的前缀 左括号内的剩余部分 括号内的后缀 对于上面的示例,3个组(在引号内)将是 “不带逗号的前缀” “带可选后缀的余数” “(可选后缀)” 字符串的所有3个部分都是可变长度的。余数部分本身可以包含逗号和括号,可选后缀可以以空格开始,也可以不以空格开始,然后是左括号,后面是零个或多个字符,后面是右
但是,当我尝试使用的输入运行此代码时,我得到了的意外结果 我做错了什么?