regex 相关问题

正则表达式提供了一种声明性语言来匹配字符串中的模式。它们通常用于字符串验证,解析和转换。由于正则表达式未完全标准化,因此具有此标记的所有问题还应包含指定适用的编程语言或工具的标记。注意:要求HTML,JSON等正则表达式往往会遇到负面反应。如果有解析器,请使用它。

如果双大括号 {{key:value}} 之间存在冒号,则使用正则表达式查找匹配项

我正在尝试重构下面的方法以使用正则表达式而不是indexOf: hasMatch(值:任意): 布尔值 { 如果(isDefined(值)){ const valueStr = JSON.stringify(value); 返回值...

回答 2 投票 0

正则表达式在捕获组后替换为数字?

我有一个像这样的正则表达式模式: ([0-9]*)xyz 我希望像这样进行替换: $10xyz 问题是 $1 是一个捕获组,而 0 只是我想放入替换中的数字...

回答 3 投票 0

如何删除两个分隔符之间的数字?

我有一些垃圾数据: trueText = ' 23  Wolkenvelden en   lokaal wat regen。在  奥滕德奥普  骏马我  普拉森...

回答 1 投票 0

在 python 中遇到负向前瞻正则表达式问题

所以,我必须匹配最后一个开闭括号之前的所有内容并将其分组。在最后一个开闭括号之后,尝试再次以某种模式获取值。 这我...

回答 1 投票 0

使用正则表达式从 PLSQL 中的字符串列中提取两个字母字符

TIA 为您提供帮助。 我正在寻找从 VARCHAR 列中提取两组两个字母字符的指导。 该列被隔离为具有以下文本: “类别从XX到YY”,w...

回答 1 投票 0

如果双大括号 {{key:value}} 之间存在冒号字符,则使用正则表达式查找匹配项

我正在尝试重构下面的方法以使用正则表达式而不是indexOf: hasMatch(值:任意): 布尔值 { 如果(isDefined(值)){ const valueStr = JSON.stringify(value); 返回值...

回答 1 投票 0

如果一个条件为假,正则表达式返回假

我是正则表达式的新手,我写了一些东西,如果其中一部分正确,也会返回匹配项。 这是不正确的,但表达式返回 true 这是正确的返回 true ^(((https?:\/\/[w]{3}[....

回答 1 投票 0

Java 中的正则表达式反向引用

我必须匹配一个数字及其本身 14 次。然后我在 regexstor.net/tester 中找到以下正则表达式: (\d){14} 编辑 当我将其粘贴到我的代码中时,包括

回答 3 投票 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

Regex 未在 vb.net 上进行替换

我需要帮助。我试图删除输入中的一些特殊字符,但它不起作用,我做错了什么吗?下面是我的代码: Dim txtFirstname as String = "ABC (A)&...

回答 1 投票 0

向我解释Python RegEx与r字符串的操作[重复]

为什么这没有像我预期的那样工作? re.findall 不应该在这里返回一个空列表吗?因为我逃避了反斜杠...... >>> r"a b"=="a 乙” 错误的 >>> 重新连接...

回答 1 投票 0

如何使 \w 令牌在此正则表达式中表现得非贪婪?

我有一个文本字符串,其中包含重复模式,每个重复与下一个重复之间用 . (点)字符。该模式可能以 _123(下划线后跟数字序列)结尾,a...

回答 1 投票 0

RegEx-第一个字符不应包含特殊字符,后续字符不应包含少数特殊字符

我有一个特定的验证场景。 字符串的第一个字符不应包含特殊字符,我可以使用 /^[!@#$%^&*()_+\-=\[\]{};':"\|,.<> 实现\/?]+$/ 但是

回答 2 投票 0

正则表达式匹配所有货币符号?

是否有一个正则表达式可以匹配 HTML 中出现的所有货币符号(不仅仅是 $)?我正在尝试从 html 页面中提取所有出现的金额。谢谢!

回答 4 投票 0

DT::datatable 正则表达式 OR 运算符问题

OR 运算符适用于第一种情况,但不适用于第二种情况 此代码创建 DT::datatable(),它返回与“mazda”或“datsun”匹配的所有行 图书馆(tidyverse)

回答 1 投票 0

我无法使用 Pattern.matcher() 找到匹配项[重复]

我试图找到以“1”开头和结尾且中间只有“0”的字符串(可能没有零)。如何编写正则表达式来获取匹配的子字符串? 为什么这个代码...

回答 1 投票 0

Scala 中第 n 个模式匹配的索引

我有一个程序,我试图找到字母“e”第n次出现的索引。我猜到了类似这样的事情... def findE(line: String, 忽略: Int) : Int = { val 模式 = "...

回答 2 投票 0

如何在 Javascript Regex 中匹配单个单词?

我只想在 javascript 中的模式后面匹配一个单词 (\w+)。 这是我的简单测试代码: (new RegExp("苹果:\w+")).test("苹果:asdf"); 然而,javascript 告诉我 patt...

回答 3 投票 0

从字符串Python的前4个值中删除字母数字以外的字符

我需要从字符串的前 4 个字符中删除字母数字以外的字符。我弄清楚了如何处理整个字符串,但不确定如何仅处理前 4 个值。 数据:'1...

回答 3 投票 0

电子邮件验证模式在 Angular fo 中无法正常工作

我在我的角度形式中使用电子邮件验证,它在大多数情况下工作正常。但是,如果我以“test@test”形式输入电子邮件地址,它会在电子邮件周围显示红色轮廓,但是...

回答 1 投票 0

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