我遇到了这个问题。我有一个
val line:String = "PE018201804527901"
Run Code Online (Sandbox Code Playgroud)
与此匹配
regex : (.{2})(.{4})(.{9})(.{2})
Run Code Online (Sandbox Code Playgroud)
我需要从正则表达式中提取每个组到一个数组。
结果将是:
Array["PE", "0182","018045279","01"]
Run Code Online (Sandbox Code Playgroud)
我尝试做这个正则表达式:
val regex = """(.{2})(.{4})(.{9})(.{2})""".r
val x= regex.findAllIn(line).toArray
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
我有以下RegEx使用和工作:
/\B@(@?\w+(?:::\w+)?)([ \t]*)(\( ( (?>[^()]+) | (?3) )* \))?/x
这个字符串@extends('template', 'test')正确分组并给我我需要的地方.
问题是如果字符串在引号内包含一个未闭合的括号 - 它将失败:
@extends('template', 'te)st')给出@extends('template', 'te)输出
如何告诉此RegEx忽略引号内的括号('或者")
以下是问题的RegExr演示:http://regexr.com/v1?396ci
这是一个应该能够通过的字符串列表:
@extends('template', 'test') // working
@extends('template', $test) // working
@extends('template', 'te()st') // working
@extends('template', 'te)st') // broken
@extends('template', 'te())st') // broken
@extends('template', 'te(st') // broken
@extends('template', 'test)') // broken
@extends('template', '(test') // broken
Run Code Online (Sandbox Code Playgroud)
我把它缩小了 - 我想我需要能够说出来
(
\( <-- only if not inside quotes
(
(?>[^()]+) | (?3)
)*
\) …Run Code Online (Sandbox Code Playgroud) 最后,我想替换
我目前在Regex101上的所有\t包含的内容,尝试对我的正则表达式进行各种迭代......这是我迄今为止最接近的......"
originString = blah\t\"blah\tblah\"\t\"blah\"\tblah\tblah\t\"blah\tblah\t\tblah\t\"\t\"\tbleh\"
regex = \t?+\"{1}[^"]?+([\t])?+[^"]?+\"
\t?+ maybe one or more tab
\"{1} a double quote
[^"]?+ anything but a double quote
([\t])?+ capture all the tabs
[^"]?+ anything but a double quote
\"{1} a double quote
Run Code Online (Sandbox Code Playgroud)
我的逻辑有问题!我需要您帮助对制表符进行分组。
嗨,我有以下数值
000001010016C02AB 111*
000001010016C02 111H
000001010016C 111
Run Code Online (Sandbox Code Playgroud)
而预期的产出是
00000101001,C02AB,*
00000101001,C02,H
00000101001,C,
Run Code Online (Sandbox Code Playgroud)
值可能会有所不同.此字符串的长度始终为23.如果字符不存在,则位置将填充空白区域.现在的正则表达式是
(^.{11})[0-9](.{5})(?:.{5})(.*)
Run Code Online (Sandbox Code Playgroud)
但是在第二组中使用此正则表达式时,会返回空格.我希望那些白色空间被删除.
电流输出:
00000101001,C02AB,*
00000101001,C02 ,H
00000101001,C ,
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我删除第二组的空白区域吗?
我有以下正则表达式:
@"{thing:(?:((\w)\2*)([^}]*?))+}"
Run Code Online (Sandbox Code Playgroud)
我用它来查找字符串中的匹配项:
MatchCollection matches = regex.Matches(string);
IEnumerable formatTokens = matches[0].Groups[3].Captures
.OfType<Capture>()
.Where(i => i.Length > 0)
.Select(i => i.Value)
.Concat(matches[0].Groups[1].Captures.OfType<Capture>().Select(i => i.Value));
Run Code Online (Sandbox Code Playgroud)
这用来产生我想要的结果; 但是,我的目标已经改变了.这是现在所需的行为:
假设输入的字符串是'stuff/{thing:aa/bb/cccc} {thing:cccc}'
我想 formatTokens是:
formatTokens[0] == "aa/bb/cccc"
formatTokens[1] == "cccc"
Run Code Online (Sandbox Code Playgroud)
现在,这是我得到的:
formatTokens[0] == "/"
formatTokens[1] == "/"
formatTokens[2] == "cccc"
formatTokens[3] == "bb"
formatTokens[4] == "aa"
Run Code Online (Sandbox Code Playgroud)
请特别注意,即使输入两次,"cccc"也不会出现两次.
我认为问题是1)正则表达式中的重新捕获和2)concat配置(从我希望所有内容分离时),但到目前为止,我还没有找到产生我想要的组合.有人能否对正确的正则表达式/ concat组合有所了解,以产生上述所需的结果?
是否可以在 java 模式中使用正则表达式全局 g 标志?
我尝试过,final Pattern pattern = Pattern.compile(regex,Pattern.DOTALL);
但它的行为不像全局标志。
我们在 java 中有任何解决方法吗?
我的正则表达式是:
private final String regex ="(public|private|protected|static|final|abstract|synchronized|volatile)\\s*([\\w<>\\[\\]]+)\\s*(\\w+)\\s*\\(([\\w\\s\\w,<>\\[\\]]*)?\\)\\s*(\\bthrows\\b)?[\\s\\w\\s,\\w]*\\{[\\n\\t]*(.+)[\\n\\t]*((return|throw){1}\\s*)(\\w*)\\s*;\\s*[\\}]";
输入是文件内容,类似于下面正则表达式链接中提到的内容:https : //regex101.com/r/u7vanR/3
我想要 java 模式找到这两个出现,但是使用 java 正则表达式标志它只是找到第一个而不是两个。
我正在尝试编写一个正则表达式,该表达式可用于在字符串中查找日期,该字符串前面(或后面)可能有空格、数字、文本、行尾等。该表达式应处理美国日期格式要么
1) Month Name Day, Year - 即 2019 年 1 月 10 日或
2) mm/dd/yy - 即 11/30/19
我为月份名称,年份找到了这个
(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4}
Run Code Online (Sandbox Code Playgroud)
(感谢 Veverke 在这里Regex 匹配日期,如月份名称日逗号和年份
这对于 mm/dd/yy(以及 m/d/y 的各种组合)
(1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}
Run Code Online (Sandbox Code Playgroud)
(在此感谢 Steven Levithan 和 Jan Goyvaerts https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s04.html
我试图把它们像这样结合起来
((Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4})|((1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2})
Run Code Online (Sandbox Code Playgroud)
当我在输入字符串“Paid on 1/1/2019”中搜索“on [regex above]”时,它确实找到了日期,但没有找到“on”这个词。如果我只是使用,则找到该字符串
(1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
编辑
我正在使用下面的 c# .net 代码:
string stringToSearch = "Paid on 1/1/2019";
string searchPattern = @"on ((Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4})|((1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2})";
var match = Regex.Match(stringToSearch, searchPattern, RegexOptions.IgnoreCase);
string foundString;
if (match.Success)
foundString= stringToSearch.Substring(match.Index, match.Length);
Run Code Online (Sandbox Code Playgroud)
例如
string searchPattern = …Run Code Online (Sandbox Code Playgroud) 我想知道这个 Elixir 正则表达式是如何工作的。
Regex.run(~r{(*UTF)([^\w])+}, "dd!!%%%")
Run Code Online (Sandbox Code Playgroud)
当我执行这个正则表达式时,输出是
["!!%%%", "%"]
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么在匹配正则表达式后会重复最后一个 %。
我对 swift 中的 NSRegularExpression 有点困惑,有人可以帮助我吗?
任务:1给出("name","john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免使用括号。
任务:2给出("name"," john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免括号和额外的空格,最后得到字符串数组。
任务:3给出key = value // comment
那么我应该得到["key","value","comment"]. 在这里,我应该通过避免只获取行中的字符串,=并且//
我已经尝试了下面的任务 1 代码但没有通过。
let string = "(name,john,string for user name)"
let pattern = "(?:\\w.*)"
do {
let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let matches = regex.matches(in: string, options: [], range: NSRange(location: 0, length: string.utf16.count))
for match …Run Code Online (Sandbox Code Playgroud) 我想为 NAME;NAME;NAME 和 NAME;NAME;NAME;NAME 设置一个正则表达式,其中 NAME 的第四次出现是可选的。
我有一个正则表达式 (.+);(.+);(.+) 匹配第一个模式但不匹配第二个。我试过玩?但它不适用于 (.+);(.+);(.+)(;(.+))?基本上,我想实现第四个 (.+) 为零或一次出现。