1.python 正则表达式 groups和group有什么区别
group和groups是两个不同的函数。
一般,m.group(N) 返回第N组括号匹配的字符。
而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。
m.groups() 返回所有括号匹配的字符,以tuple格式。
m.groups() == (m.group(0), m.group(1), 。)
对你给的例子:
m = re.match("([abc])+", "abc")
你的+号在括号外面。括号最多匹配到一个字符,要么是a, 要么是c,这个python引擎匹配的是末尾的c。
而m.group() == m.group(0) 这个返回的是整个匹配的字符串"abc".
关于捕获型括号在正则表达式里的用法,参见相关文档。
2.Python与R语言的区别是什么
数据结构方面,由于是从科学计算的角度出发,R中的数据结构非常的简单,主要包括向量(一维)、多维数组(二维时为矩阵)、列表(非结构化数据)、数据框(结构化数据)。
而 Python 则包含更丰富的数据结构来实现数据更精准的访问和内存控制,多维数组(可读写、有序)、元组(只读、有序)、集合(一、无序)、字典(Key-Value)等等。 Python与R相比速度要快。
Python可以直接处理上G的数据;R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。 Python是一套比较平衡的语言,各方面都可以,无论是对其他语言的调用,和数据源的连接、读取,对系统的操作,还是正则表达和文字处理,Python都有着明显优势。
而R是在统计方面比较突出。 Python与R语言的应用场景 应用Python的场景 。
3.JAVA语言编程中如何使用表达式
JAVA 正则表达式涉及的三个类: String,Pattern,Matcher Pattern是要匹配的模式,Matcher是匹配的结果。
例如:Pattern p = Pattern。complie("[a-z]{3}"); Matcher m = p。
mather("abc"); 要想在正则表达式中匹配一个反斜线用四个反斜线表示: "\\"。matches("\\\\"); 匹配空白行 " \n"。
matches("^[\\s&&[^\\n]]*\\n$"); 找出匹配结果在整个字符串的开始位置和结束位置 Pattern p = Pattern。 complie("\\d{3,5}"); String a = "123-2135-155-00"; Matcher m = p。
matcher(s); m。matches() // 匹配整个字符串,所以这里是false; m。
reset(); while(m。 find()) // 找一个和这个模式所匹配的子串 { System。
out。println(m。
start() + "To" + m。end()); } 将匹配到的java都转换成大写的 Pattern p = Pattern。
complie("java", Pattern。 CASE_INSENSITIVE); Matcher m = p。
matcher("java Java JaVa IloveJava You HateJaVA"); m。replaceAll("JAVA"); 将匹配偶数个转换为大写,奇数个转换为小写 package zx。
test; import java。util。
regex。Matcher; import java。
util。regex。
Pattern; public class TestPattern { public static void main(String[] args) { StringBuffer newString = new StringBuffer(); String isPatternString = "java Java JaVa IloveJava You HateJaVA"; Pattern p = Pattern。 compile("java", Pattern。
CASE_INSENSITIVE); Matcher m = p。matcher(isPatternString); int i = 0; while(m。
find()) { i++; if (i % 2 == 0) { m。 appendReplacement(newString, "java"); } else { m。
appendReplacement(newString, "JAVA"); } } m。appendTail(newString); System。
out。println(newString); } } 输出结果:JAVA java JAVA Ilovejava You HateJAVA Java正则表达式分组: private static void testGroup() { String s = "3412afdsaf-34ijii-422342k23-423423fsdfaf"; Pattern p = Pattern。
compile("(\\d{1,10})([a-z]{1,9})"); // 组1:(\\d{1,10}) 组2:([a-z]{1,9}) Matcher m = p。matcher(s); while(m。
find()) { System。 out。
println("Group0: " + m。group() + " Group1: " + m。
group (1) + " Group2: " + m。 group (2)); } } 输出结果: Group0: 3412afdsaf Group1: 3412 Group2: afdsaf Group0: 34ijii Group1: 34 Group2: ijii Group0: 422342k Group1: 422342 Group2: k。
4.python 函数参数没有默认值怎么表示
没有默认值,你不设置就是了,如:def GetLibraryGroup(name, groupKey='month', orderBy = 'name'):上面的函数定义中,name没有给默认值,其余的都给了,调用时,相应的参数如果你不给值,那么函数会以默认值来运行,比如GetLibraryGroup('filetable'),这个调用没有给groupKey,orderBy 两个参数,但是函数定义时,给了默认的值,就相当于GetLibraryGroup('filetable','month',,'name')了,当然如果你调用时给默认的参数赋了其他值,那么以你的调用为准,如GetLibraryGroup('filetable','year',,'createTime'),这个调用groupKey,orderBy两个参数就会是你调用时给的'year',,'createTime'。
转载请注明出处编程代码网 » pythonregexgroup(python正则表达式groups和group有什么区别)