regex-group 相关问题

通过将正则表达式的一部分放在括号内来创建正则表达式组。组允许将量词应用于整个组或限制交替使用正则表达式的一部分。除了将正则表达式的一部分组合在一起外,括号还会创建一个编号的捕获组。它将正则表达式中与正则表达式部分匹配的字符串部分存储在括号内。

这里我想在Text中找到单词的匹配文本模式

你能帮我一些解决方案吗?我有两种类型的代码;其中一个正在运行,另一个则无法运行。 在职的 常量 str = “你好,我的名字是\[名字\],我\[年龄\]岁,并且......

回答 1 投票 0

使用正则表达式抓取类对象字符串(类似于 JSON)的键/值对

对于像 {float: 'null', another: 'foo'} 这样的字符串,我想获取每组键/值对,以便这些组输出 float null、another 和 foo。 我当前的正则表达式是 /\{(? 对于像 {float: 'null', another: 'foo'} 这样的字符串,我想获取每组键/值对,以便各组输出 float null、another 和 foo。 我当前的正则表达式是 /\{(?<set>(?<key>\w*)\s*\:\s*(?<value>.*)?\s?)*\}/g 它正确地获取键,但是从逗号开始的任何内容都会将其作为值接收。我使用命名组主要是为了清楚起见。无法弄清楚如何提取每个键/值对,特别是当有多个键/值对时。 感谢您的帮助 目前正在尝试/\{(?<set>(?<key>\w*)\s*\:\s*(?<value>.*)?\s?)*\}/g,但输出是: 组“设置”:float: 'null', another: 'foo'(正确) 组“关键”:float(正确) 组“值”:'null', another: 'foo'(不正确,我只想null) 如果可能的话希望它捕获所有键/值对 编辑以获得更清晰的信息: 我的具体用例是解析 Markdown 并将其插入 Svelte 中的自定义组件,我想控制从图像上的 Markdown 语法收集道具的能力。根据我在网上收集的有关在图像上添加属性的信息,它应该看起来像这样: ![Alt Text]https://<fullurl>.jpg "This is hover text"){prop1: 'foo', prop2: 'bar', float: true} 正则表达式的原因是解析 Markdown 字符串。它不是 JSON,并且通过遵循 JSON 语义我并没有真正获得任何东西("在关键上) 尝试一下这个长的 JavaScript 正则表达式: /(?<key>\w*)\s*\:\s*(?<value>(?<quote>["'])(?:(?=(?<backslash>\\?))\k<backslash>.)*?\k<quote>|(?<number>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)|(?<constant>true|false|null))/g 实际操作(整页查看,如果不是,则不全部可见): const regexKeyValue = /(?<key>\w*)\s*\:\s*(?<value>(?<quote>["'])(?:(?=(?<backslash>\\?))\k<backslash>.)*?\k<quote>|(?<number>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)|(?<constant>true|false|null))/g; document.getElementById('search').addEventListener('click', function () { const input = document.getElementById('input').value; let match, i = 1, output = []; while ((match = regexKeyValue.exec(input)) !== null) { console.log(`Match n°${i} : ` + match[0]); console.log('match.groups =', match.groups); // If the value is starting with quotes, then unquoted it and // also replace all the escape sequences (ex: "\\n" should become "\n"). let value = match.groups.value; // If it's double quotes, let's use JSON.parse() as it will handle everything. if (value.match(/^"/)) { value = JSON.parse(value); } // If it's simple quotes, we can't use JSON.parse() so we have to trick it a bit. else if (value.match(/^'/)) { // 1) Remove the simple quotes around. // 2) Replace all \' by '. // 3) Escape all double quotes (" becomes \"). // We have to search for all backslashes to handle also an escaped backslash. value = value .replace(/^'|'$/g, '') .replace(/\\(.)/g, function (fullMatch, afterBackslash) { if (afterBackslash === "'") { return "'"; } else { return fullMatch; } }). replace(/"/g, '\\"'); console.log(`"${value}"`); // Now use JSON.parse(); value = JSON.parse(`"${value}"`); } // If it's a number or a constant, then convert the string to this real JS value. if (typeof match.groups.number !== 'undefined' || typeof match.groups.constant !== 'undefined') { value = eval(match.groups.value); } output.push( `Match n°${i++} :\n` + ` Key : ${match.groups.key}\n` + ` Value : ${value}\n` ); } document.getElementById('output').innerText = output.join("\n"); document.getElementById('label').classList.remove('hidden'); }); textarea { box-sizing: border-box; width: 100%; } pre { overflow-y: scroll; } .hidden { display: none; } <textarea id="input" rows="10">{ float: 'null', another: "foo", age: 45, type: '"simple" \' quote', comment: "Hello,\nA backslash \\, a tab \t and a \"dummy\" word.\nOk?", important: true, weight: 69.7, negative: -2.5 }</textarea> <button id="search">Search for key-value pairs</button> <p id="label" class="hidden">Matches:</p> <pre><code id="output"></code></pre> 相同的正则表达式,带有注释,带有 x 标志 PCRE 提供: / (?<key>\w*) \s*\:\s* (?<value> # A string value, single or double-quoted: (?<quote>["']) (?:(?=(?<backslash>\\?))\k<backslash>.)*? \k<quote> | # Int and float numbers: (?<number>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?) | # true, false and null (or other constants): (?<constant>true | false | null) ) /gx 或者更好的是,在 regex101 上,您将获得颜色和解释 右栏:https://regex101.com/r/bBPvUd/1 正如评论中提到的,eval()被认为是“邪恶的”或至少是不安全的。我已经忘记了具体原因,与跨端脚本有关。但是,如果在“安全”环境中使用,即。 e.对于您可以完全控制的输入的预处理,那么它可能仍然是可以接受的。 const md=`Some text and now the image: ![Alt Text]https://<fullurl>.jpg "This is hover text"){prop1: 'foo', prop2: 'bar', float: true} and some more text. A new paragraph any yet nother picture ![Alt Text2]https://<fullerURL>.jpg "This is another hover text"){prop1: 'fool', prop2: 'bart', float: false} and this is the end.`; function unsafeParse(s){ return s.match(/\{[^}]+\}/g).map(t=>eval(`(${t})`)); } // ouputs an array of all image property objects: console.log(unsafeParse(md)); 上述内容并不完全安全,因为包含“}”字符的属性值会导致问题......

回答 2 投票 0

提取两行之间的标题的正则表达式

我正在尝试提取两条虚线之间的标题 -------------------------------------------------- ---------------------------------------------------- 端口号描述...

回答 1 投票 0

正则表达式回溯多个条件

我有一个字符串,可能如下(1种可能性): “2024年1月1日;2024年2月1日;2024年10月1日” 我想返回(从右侧)最后一次出现的多种可能的日期格式...

回答 2 投票 0

简单的正则表达式问题对我来说似乎很难回答

给定输入文本 随机数字 我可以喝点牛奶吗 或者 随机数字 我可以喝点牛奶吗 我需要匹配两个字符串并仅捕获 Can I have some milk 部分,省略 please ...

回答 1 投票 0

如何从顶部提取发票号码作为单词发票后的第一个匹配项

发票包含单词“发票”,后跟发票编号,如发票顶部区域的 IN280625-3/4: 付款人:_xxxxxxx 运单发票_IN280625-3/4 Nimetus_EAN 发票开具人:约翰 销售发票

回答 1 投票 0

在日志文件中查找字符串以进行zabbix监控

我需要使用正则表达式在日志文件中查找字符串,然后将输出发送到 Zabbix 监控服务器以在需要时触发触发器。 例如,这是日志文件的一部分: =====备份失败=====

回答 1 投票 0

通过按特定顺序多次调用 re.sub() 方法来对字符串执行替换,并以这些正则表达式为条件

重新导入 #示例1 input_str =“creo que hay 330 trillones 2 billones 18 millones 320 mil 459 47475822” #示例2 input_str = "sumaria 6 cuatrillones 789 billones 3.2 亿 a esta...

回答 2 投票 0

正则表达式 - 捕获组whish可以选择包含在字符序列中

我有一个文件,其中包含我需要从类似 JSON 的语法中提取的行。 我的正则表达式在大多数情况下运行良好。它将所需的符号提取到第二个捕获组中。但我有时注意到我的愿望......

回答 1 投票 0

匹配正则表达式命名组直到可选单词

我有这两个字符串,我想使用正则表达式从中获取一些信息。 漏洞:将 pypi://onnx 从 1.12.0 升级到 1.13.0 Final 漏洞:将 pypi://onnx 从 1.12.0 升级到 1.13.0 Final ...

回答 1 投票 0

不以组中任何字符开头且不包含任何多个子字符串的字符串的正则表达式

这对某些人来说可能很简单,但我已经浪费了大量时间试图自己到达那里。我需要一个正则表达式: 不要以“_”或“-”开头。 请勿以“_”或“-”结尾。 做...

回答 2 投票 0

正则表达式结果包含额外的匹配/组,仅包含一个返回值

我想匹配开始和结束之间的所有内容,给出以下字符串: const test = `这是开始 A 乙 C e F 结尾 G H `; 我有以下正则表达式 const 输出 = test.match(/start(...

回答 2 投票 0

正则表达式不匹配,但仅在 Java 中

我对以下正则表达式有疑问。 我有一个想要匹配的字符串 String test = "服务器返回 HTTP 响应代码: 403 URL: https://an.url.example"; 我...

回答 2 投票 0

正则表达式 OR 结果产生两个单独的组,如何将其捕获为单个组?

我正在尝试在 GoLang 正则表达式中捕获以下输入字符串的用户名,我希望匿名用户和用户 Prettygurl91 位于单个组中,但以下情况并非如此

回答 1 投票 0

制作正则表达式来检索html标签的href/src

我试图从链接中获取href,从脚本标签中获取src。 由于这是我第一次使用正则表达式,因此我对分组、否定和条件选择的工作原理还不够了解。 T...

回答 1 投票 0

如何将一个数字与可能在方括号中的一组相匹配?

我需要从这样的字符串中获取数字: "前缀.[10].后缀 “前缀.10.后缀” 我的第一直觉是这样做: \w+\.((\[(?\d+)\])|(?\d+))\...

回答 3 投票 0

javascript提取浮点数正则表达式不正确匹配

我有下面的javascript程序 - var rx = /^值应该(?: 在 (\d+(\.\d+)?) 和 (\d+(\.\d+)?))$/; var句子=“值应该在1.1和2.7之间”; var arr = rx.exec(sente...

回答 1 投票 0

如何匹配所有不属于捕获组的字符?

我想匹配除捕获组中的字符之外的所有字符。这是一个最小的正则表达式,作为我想要实现的目标的示例: /(?:(["'])[^ ]* )/g 明显的问题是 [^ ]

回答 2 投票 0

需要 Google Sheets 正则表达式函数帮助

我有 600 场由不同演讲者就不同主题进行的演讲的数据库。 它们的格式为: 主题 1(演讲者 1) Event_type_1 - ,主题 2(发言者 2) Event_type_2 - ,主题 3(发言者 3) 主题 4(苏...

回答 1 投票 0

边界超出匹配范围的正则表达式

我想匹配一个单词,但我希望捕获组包含匹配单词之前和之后的数字之间的所有内容。 在下面的示例中,匹配项是 KEYWORD,...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.