正则表达式相关
双反斜杠引发的正则表达式错误
今天写js所填数据的校验时,遇到了以下的错误。特此记录
Uncaught SyntaxError: Invalid regular expression: /^(+?d+)(.d+)?$/: Nothing to repeat
源码:
var reg = new RegExp('^(\+?\d+)(\.\d+)?$');
乍得一看,好像没有什么错误。但是细心就会发现。抛出异常哪里的正则表达式有点错误,少了反斜杠。原因是我们没有加上双反斜杠而导致的错误。
正确代码:
var reg = new RegExp('^(\\+?\\d+)(\\.\\d+)?$');
感想:要细心查看抛出的错误。
参考:http://zengxiangzhen.blog.51cto.com/9237594/1546944,感谢原博主。
正则表达式:
a= 其特征在于,(.+?)[。,]
解释: ".+?" 是一个正则表达式,它可以匹配任意一个或多个字符(除了换行符),直到第一次出现下一个模式所在的位置。这里的 .
表示匹配任意字符(除了换行符),而 +
表示匹配前面的字符一次或多次,并且是贪婪模式(尽可能多地匹配字符)。最后的 ?
表示将贪婪模式转换成非贪婪模式(尽可能少地匹配字符)。
解释: 这里的下一个模式即为[。,] 其特征在于,开始, 直到首次遇到。,为止。
b= 其特征在于,(.+?)
解释: ".+?" 是一个正则表达式,它可以匹配任意一个或多个字符(除了换行符),直到第一次出现下一个模式所在的位置。 这里没有下一个模式, 那么.+ 表示匹配人一个字符(除了换行符), 即停止。
参考文章
python 正则表达式原始字符串:https://blog.csdn.net/weixin_35934226/article/details/112937910
已转义字符串 --- 字符串-- 正则表达式
下面给出两个例子:
匹配双引号内的内容 给一段java的示例代码
以下是匹配双引号内的内容的正则表达式: "(.*?)" 这个正则表达式与上面 Python 的示例相同,可以匹配双引号 " 内的任意字符串,并使用非贪婪模式(*?)来确保匹配最少量的字符。 以下是一个 Java 示例代码,用于演示如何使用正则表达式匹配双引号内的内容: java import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void main(String[] args) { String myString = "She said, \"Hello!\" and then \"Goodbye!\""; Pattern pattern = Pattern.compile("\"(.*?)\""); Matcher matcher = pattern.matcher(myString); while (matcher.find()) { System.out.println(matcher.group(1)); } } } 在上面的代码中,我们使用 java.util.regex 包中的 Pattern 和 Matcher 类来编译和执行正则表达式。我们首先使用 Pattern.compile() 方法将正则表达式编译为一个模式,然后使用 Matcher 类的 find() 方法查找匹配项。每次找到匹配项时,我们使用 group(1) 方法获取第一个捕获组的内容,即双引号内的字符串。最终输出结果将是: Hello! Goodbye! 这段代码可以作为学习 Java 正则表达式的入门示例。
python正则:
以下是匹配双引号内的内容的正则表达式: "(.*?)" 该正则表达式使用了非贪婪模式(*?),可以匹配最少量的字符。这个模式与贪心模式(*)不同,它会尽可能少地匹配字符。 例如,如果要从以下字符串中匹配所有双引号内的内容: my_string = 'She said, "Hello!" and then "Goodbye!"' 可以使用以下代码: python import re matches = re.findall(r'"(.*?)"', my_string) print(matches) # Output: ['Hello!', 'Goodbye!'] 在上面的代码中,我们使用了 re.findall() 函数来查找所有符合正则表达式的字符串。匹配的结果是一个列表,其中包含了两个双引号内的内容。