在我的应用程序中,我可以接受如下格式的字符串:
'key':'value'
'key1':'value1'
'key2':'value2'
现在我想写一个regex模式来检查这个格式,所以我写这个模式:
/^'(.*)'(:{1})'(.*)?'($|\n)/gm
https://regex101.com/r/oM1qO9/3
这个模式可以工作,但如果我将字符串更改为下面的示例,请再次工作,因为选择第一个引号和最后一个引号,这样字符串就与模式匹配。
'key':'value','key1':'value1' 'key2':'value2'
https://regex101.com/r/oM1qO9/4
使用“([^'])”\s*:\s*“([^']*)”:
首先它匹配任何不包含“一对之间”的非空字符串,然后匹配任何数量的空格、冒号和任何数量的空格,最后它匹配另一个可能不包含“一对之间”的空字符串。
我假设您只想捕获键和值,而不是冒号,因此我删除了该捕获组。
https://regex101.com/r/nxVAkB/3
<代码>*
模式”尽可能多地匹配除换行符以外的任何0个字符:从当前位置到行尾,使用它在到达行尾的过程中找到的所有字符。即使您使用<代码>*
模式”(code>pattern),一个懒惰的量化点,它仍将通过'
查找有效匹配项(至少有4个'
字符的整行)。
因此,您需要在这里使用否定字符类,[^']
,它匹配除'
之外的任何字符。
/^'([^']*)':'([^']*)'$/
或-禁止空键名称:
/^'([^']+)':'([^']*)'$/
或-不允许空名称和值:
/^'([^']+)':'([^']+)'$/
细节
^
-字符串的开始'
-撇号([^']*)
-组1:除'
':'
-字面子串':'
([^']*)
-组2:除'
'$
-字符串末尾的'
。请参阅regex演示。
请注意,匹配0次或更多次。如果需要至少匹配一个,请改用。
要允许使用可选的空格,请在需要的地方添加*。E、 例如,您可以使用
/^\s*'([^']*)'\s*:\s*'([^']*)'\s*$/
查看此正则表达式演示。
问题内容: 使用正则表达式的python中的代码可以执行类似这样的操作 谢谢 问题答案: 这是您需要做的所有事情: 正如叶立昂指出:(我几乎引用) 是的“非贪婪”版本。它使正则表达式匹配的字符数最少,而不是最多。贪婪的版本会给出字符串;非贪婪版本‘String 1,String 2,String3’ 另外(再次使用Johan,),如果您想接受空字符串,请更改为。星号表示零个或多个-加号表示至少一个
本文向大家介绍如何在JSP中检查指定子字符串的字符串中的索引?,包括了如何在JSP中检查指定子字符串的字符串中的索引?的使用技巧和注意事项,需要的朋友参考一下 的FN:的indexOf()函数返回指定的子串中的索引。 语法 该FN:的indexOf()函数的语法如下- 示例 以下是解释fn:indexOf()函数功能的示例- 您将收到以下结果-
问题内容: 如果字符串中除了下划线以外不包含任何特殊字符,则只能在其程序中使用。我该如何检查? 我尝试使用unicodedata库。但是特殊字符只是被标准字符所代替。 问题答案: 您可以像这样使用和运行 用这条线 我们正在准备不允许使用的标点符号列表。如您所愿,我们正在从列表中删除并准备新的。因为在集合中查找速度更快。 如果至少一个字符位于中,则函数将返回。 编辑: 如评论中所述,这是正则表达式解
例如:当我通过->不要:它工作正常 但是当我通过->don''t:它不正常工作时,最终输出变成了don'''t 我只想把单引号转换成双引号。我怎么能这么做?
为什么下面的方法只检查提供的字符串中的第一个字符? 例如,以下字符串返回false:“abc”但“abc”返回true。
问题内容: 在我的应用程序中,我从LDAP获取用户信息,有时完整的用户名使用了错误的字符集。例如: 它也可以是英语或俄语,并可以正确显示。如果用户名更改,它将在数据库中更新。即使我更改数据库中的值,它也无法解决问题。 我可以在保存之前修复此问题 但是,如果我将它用于包含俄语字符的字符串(例如,“Тест61Тестович61”),则会得到类似“ ??? 61 ??????? 61”的信息。 您能