regex-group 相关问题

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

正则表达式递归捕获到单个组中

这是一个非常简单的任务,我有一个字符串: s/测试/foo/酒吧 我希望一个组包含 s/test/ ,其余的包含在另一组中: 第 1 组:s/测试 第 2 组:foo/bar 我的表情是: (/s/

回答 1 投票 0

postgresql 正则表达式分组+提取价格文本时的转换问题

在postgresql中,我试图返回文本字段中价格的格式化价格值,但仅当文本字段值不包含其他多余文本时。 例如,有了这三个...

回答 1 投票 0

如何仅在捕获组不为空时插入某些字符?

给出这些字符串: var string1 = "Chapter_1"; var string2 = "Chapter_1a"; 期望的结果是: “第1章。” “第 1 章.a)” 我可以这样: 变种

回答 1 投票 0

正则表达式通配符与多个匹配对象匹配

我编写了解析结构化文档的代码(意味着每个段落都有一个标题 - 例如 1.1.、1.1.1.、2.1.)并返回每个段落的字典及其参考和参考文本...

回答 1 投票 0

Python正则表达式:查找多个特定长度的子字符串(查找字符串中的5位和6位数字)

我正在为技术报告建立一个.pdf数据抓取器。 原始数据大多采用多页 .pdf 形式,其中有用数据仅在第一页上。 使用 PyPDF2 模块,我合并了所有...

回答 1 投票 0

Python-正则表达式:查找多个特定长度的子字符串(查找字符串中的 5 和 6 位数字)

我正在为技术报告建立一个.pdf数据抓取器。 原始数据大多采用多页 .pdf 形式,其中有用数据仅在第一页上。 使用模块 PyPDF2,我合并了所有第一个...

回答 1 投票 0

这里我想在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

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