天道酬勤,学无止境

regex

RegEx that matches positive numbers

问题 我需要编写一个正则表达式来只允许正数(整数或小数)。 我发现了这个: /^(?!(?:0|0\.0|0\.00)$)[+]?\d+(\.\d|\.\d[0-9])?$/ 但它只接受最多 2 位小数。 我必须进行哪些更改,以便它可以接受任意位数的小数? 另外我在哪里可以找到学习正则表达式的好教程。 预先感谢 回答1 这将是我的方式: ^[+]?\d+([.]\d+)?$ 编辑:如果你想允许类似.23的东西,你可以使用^[+]?([.]\d+|\d+([.]\d+)?)$ 编辑: tchrist坚持这一点:allowing 4. ,你可以使用^[+]?([.]\d+|\d+[.]?\d*)$ 解释: 有或没有正号一位或多位数字有还是没有: 小数点一位或多位数字 注意:这不会接受负数,这是您最终想要的。 回答2 简短的回答是您需要这种模式: ^(?!(?:^[-+]?[0.]+(?:[Ee]|$)))(?!(?:^-))(?:(?:[+-]?)(?=[0123456789.])(?:(?:(?:[0123456789]+)(?:(?:[.])(?:[0123456789]*))?|(?:(?:[.])(?:[0123456789]+))))(?:(?:[Ee])(?:(?:[+-]?)(?:[0123456789]+))|))$ 长答案包含在以下程序中: #!/usr/bin

2022-05-17 05:18:22    分类:技术分享    regex

Regex Number Below 90

问题 我需要验证完成百分比 < 90.00,所以基本上是 89.99 及以下。 我能够让正则表达式处理整数: ^(?:[0-9]|(?:[1-8][0-9]))$ 但是,我也需要能够匹配一个小数并在下面的字符串中找到它。 Endpointgroup Name::ALL::Endpointgroup Description::::SQLRun TS::2017-06-19 14:15:02::ORIGINAL_NODE=CE01::ORIGINAL_NODE=CE01::Total EP::940256::Completed EP::869655::Job Status::W::Percent Complete::92.49 回答1 Complete::([0-8]?[0-9]\.[0-9][0-9]) 回答2 使用正则表达式非常难看。 查看帖子 使用正则表达式验证 max-min 并使用正则表达式比较数字

2022-05-17 05:17:24    分类:技术分享    regex

What's the correct regexp pattern to match a VMS filename?

问题 http://h71000.www7.hp.com/doc/731final/documentation/pdf/ovms_731_file_app.pdf 上的文档(第 5-1 节)说文件名应如下所示: node::device:[root.][directory-name]filename.type;version 其中大多数是可选的(如节点、设备、版本) - 不确定哪些以及如何在正则表达式中正确写入(包括目录名称): DISK1:[MYROOT.][MYDIR]FILE.DAT DISK1:[MYDIR]FILE.DAT [MYDIR]FILE.DAT FILE.DAT;10 NODE::DISK5:[REMOTE.ACCESS]FILE.DAT 回答1 回答2 来自维基百科,完整的形式实际上不止于此: NODE"accountname password"::device:[directory.subdirectory]filename.type;ver 这需要一段时间,但这是一个应该接受所有有效变体并将组件放入捕获组的表达式。 (?:(?:(?:([^\s:\[\]]+)(?:"([^\s"]+) ([^\s"]+)")?::)?([^\s:\[\]]+):)?\[([^\s:\[\]]+)\])?([^\s:\[\]\.]+)(\.[^\s:\[\];]+)?(

2022-05-17 05:16:13    分类:技术分享    regex   filesystems   vms

regex for one letter and three number

问题 我试过这个 RegEX 没有解决方案 ^([a-zA-Z]{1})([0-9]{3})$ 测试用例:有效 123天 f311 12d3 99A9 回答1 ^([a-zA-Z]\d{3}|\d[a-zA-Z]\d{2}|\d{2}[a-zA-Z]\d|\d{3}[a-zA-Z])$ 回答2 请根据您的要求检查以下表达式 (?=(?:.*\d){3})(?=(?:.*[a-zA-Z]){1})^[a-zA-Z\d]*$ 细分: 寻找至少 3 位数字: (?=(?:.*\d){3}) 查找至少 1 个字母: (?=(?:.*[a-zA-Z]){1}) 定义开始和结束之间允许的内容: ^[a-zA-Z\d]*$ 你可以在这里查看示例。 回答3 您可以使用前瞻来检查是否有一个字母(不区分大小写)和数字: ^(?=\d*[a-z]\d*$).{4}$ 或 4 个字符: ^(?=.{4}$)\d*[a-z]\d*$ 如果前瞻不可用,您可以使用@cmbuckley 模式,但您也可以将其分解。 ERE 中的一个例子: ^([0-9]([0-9]([0-9][a-z]|[a-z][0-9])|[a-z][0-9]{2})|[a-z][0-9]{3})$ 顺便说一句:永远不要使用量词{1} ,每个没有量词的标记默认出现一次。

2022-05-17 04:46:03    分类:技术分享    javascript   regex

Regular expression extracting number dimension

问题 我正在使用 python 正则表达式从数据库中提取维度信息。 该列中的条目如下所示: 23 cm 43 1/2 cm 20cm 15 cm x 30 cm 我需要的只是条目的宽度(因此对于带有“x”的条目,只有第一个数字),但正如您所看到的那样,值无处不在。 根据我在文档中的理解,您可以使用它们的位置访问匹配中的组,所以我想我可以根据返回的组数和在每个索引处找到的内容来确定条目的类型。 到目前为止我使用的表达式是^(\d{2})\s?(x\s?(\d{2}))?(\d+/\d+)?$ ,但是它并不完美,它返回一个无用组的数量。 有没有更有效和更合适的方法? 编辑:我需要每一行的数字。 当只有一个数字时,暗示只测量了宽度(包括任何小数部分,例如第 2 行)。 当有两个数字时,也测量了高度,但我只需要第一个数字的宽度(例如最后一行) 回答1 尝试下面的正则表达式,它将捕获第一个数字和可选的小数,在第一个'cm'之前 import re regex = re.compile('(\d+.*?)\s?cm') # this will works for all your example data # or # this asserted whatever come after the 1st digit group must be fractional number only

2022-05-17 04:26:08    分类:技术分享    python   regex   csv   numbers   data-processing

Convert decimal to Roman numerals

问题 d_hsp={"1":"I","2":"II","3":"III","4":"IV","5":"V","6":"VI","7":"VII","8":"VIII", "9":"IX","10":"X","11":"XI","12":"XII","13":"XIII","14":"XIV","15":"XV", "16":"XVI","17":"XVII","18":"XVIII","19":"XIX","20":"XX","21":"XXI", "22":"XXII","23":"XXIII","24":"XXIV","25":"XXV"} HSP_OLD['tryl'] = HSP_OLD['tryl'].replace(d_hsp, regex=True) HSP_OLD是一个数据框, tryl是tryl的一列,下面是HSP_OLD中的一些值示例: SAF/HSP: Secondary diagnosis E code 1 SAF/HSP: Secondary diagnosis E code 11 我用字典代替,它适用于1-10,但对于11,它将变成“II”,对于12,它将变成“III”。 回答1 抱歉,没有注意到您不仅在更新字段,而且实际上想在最后替换一个数字,但即使是这种情况 - 将您的数字正确转换为罗马数字比映射所有可能的数字要好得多发生这种情况(如果数字大于 25

2022-05-17 03:57:08    分类:技术分享    python   regex   pandas   dictionary   replace

Extract json in an array in Jmeter

问题 如何从Jmeter中的以下json data中提取 json 对象name [ : { : : "name":"x", : : "age":"50", : : "gender":"Female" : } ] 我在 JsonPath 提取器中执行此$..name ,这在我提取到的变量中给了我这个 name=["x"] 有没有办法我可以在没有数组格式的情况下获得name=x 或者有没有办法可以从["x"]中提取x ? 谢谢 回答1 您可以使用 ${name_1} 得到数组后 $..name 回答2 您需要从数组中的第一个对象获取name属性,因此您需要修改 JSON 路径表达式,使其看起来像$[0].name 参考: JsonPath - 入门 JMeter 的 JSON 路径提取器插件 - 高级使用场景 回答3 在 bean shell 后处理器中使用它是有效的 String newName = vars.get("name"). replace([","").replace("]","").replace("\"",""); log.info("name is: " +newName); 给出name is: x

2022-05-17 03:27:08    分类:技术分享    java   json   regex   jmeter   jsonpath

Simple Regex problem that I just CAN'T figure out

问题 我有一个很简单的问题,我需要解析这个字符串: "user_id" => "BXoVWYg-T_QS" 并且只抓取BXoVWYg-T_QS 到目前为止,我已经使用正则表达式从一个更大的字符串中获取了这么多,但我不知道如何将它归结为 user_id 字符串的内容 这是我到目前为止的正则表达式: "user_id" => ".*" 请帮忙! 更新我有一个 html 字符串,我试图在 Objective-c 中解析一个 iPhone 应用程序。 如果我能把正则表达式的语法记下来,我的问题就会得到解决 回答1 "user_id" => "([^"]*)" 回答2 您需要使用这样的括号来指示您的捕获: "user_id" => "(.*)" 然后,您可以找到该匹配项。 你在使用 JavaScript、Perl、C#、??? 回答3 问题是.*是贪婪的——所以它会抓取你的行/字符串中最后一个可用的" (取决于你使用的模式)。 您需要的是: A)使正则表达式不贪婪。 .*? 在某些平台上会这样做。 B)从您要匹配的字符列表中明确排除" : "user_id" => "([^"]*)"是您想要的。

2022-05-17 02:58:35    分类:技术分享    iphone   objective-c   regex   string

C# Use Regex to Remove everything inside brackets and the brackets themselves

问题 我有一个字符串: var schoolName = "University of Hawaii [Maui/Oahu/Kaui]"; 我想删除括号内的所有内容和括号本身,以便字符串仅输出“夏威夷大学”。 我一直在寻找正确的正则表达式,但没有找到解决方案: var pattern = @"\[(.*?)\]"; var query = "University of Hawaii [Maui/Oahu/Kaui]"; var matches = Regex.Matches(query, pattern); foreach (Match m in matches) { Console.WriteLine(m.Groups[1]); } 谢谢你的帮助! 回答1 var pattern = @" \[(.*?)\]"; var query = "University of Hawaii [Maui/Oahu/Kaui]"; Console.WriteLine(Regex.Replace(query, pattern, string.Empty)); 回答2 仅使用\[.*?\]您可以匹配包括括号在内的所有内容。 由于我对 C# 不是很熟悉,你可以用空字符串替换它吗? 回答3 var pattern = @"\s\[.*\]"; var regex = new Regex(pattern

2022-05-17 02:54:13    分类:技术分享    c#   regex

regex to duplicate a word and add in extra text

问题 我有一长串想要复制的单词 例子 CallDateTime WebDateTime WavName Dnis Verified Concern ConcernCode 我试图理解一些正则表达式来复制每个单词并放在右边,同时添加一些需要的文本 's/(\t+)_(\w+)/\u\2, \u\1, \0/' 好吧..那行不通,这是需要的预期输出 @CallDateTime = i.CallDateTime, @WebDateTime = i.WebDateTime, ETC... 显然,用 @ 加入 ^ 很容易,用 , 加入 $ 很容易,但我也想用正则表达式复制 我见过这个 ((\w+)_(\w+)) Replace Pattern: \3, \2, \1 但我不明白.. 回答1 让我们用记事本++解决这个问题: 查找内容: (\w+) 替换为: @\1 = i.\1, 解释: \w+匹配一个或多个单词字符 (...)是一个捕获组。 您可以在替换部分中使用\1引用它替换:文字@ ,然后是捕获的单词,然后是空格等...... 回答2 代替 : \b(\w+)\b 经过@\1 = i.\1 Javascript代码: var str = "CallDateTime\nWebDateTime\nWavName\nDnis\nVerified\nConcern\nConcernCode"

2022-05-16 23:52:08    分类:技术分享    regex   notepad++