Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么Python“分组”不适用于C语言中的正则表达式?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>这是我的Python程序:</p> <pre><code>import re print re.findall( "([se]{2,30})ting", "testingtested" ) </code></pre> <p>其输出为:</p> ^{pr2}$ <p>这正是我所期待的。我希望返回“es”,因为我搜索了2-30个字符“e”或“s”,后面跟着“ting”。在</p> <p>这是我的C程序:</p> <pre><code>#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <regex.h> int main(void) { regex_t preg; regmatch_t pmatch; char string[] = "testingtested"; //Compile the regular expression if ( regcomp( &preg, "([se]{2,30})ting", REG_EXTENDED ) ) { printf( "ERROR!\n" ); return -1; } else { printf( "Compiled\n" ); } //Do the search if ( regexec( &preg, string, 1, &pmatch, REG_NOTEOL ) ) { printf( "No Match\n" ); } else { //Allocate memory on the stack for this char substring[pmatch.rm_eo - pmatch.rm_so + 1]; //Copy the substring over printf( "%d %d\n", pmatch.rm_so, pmatch.rm_eo ); strncpy( substring, &string[pmatch.rm_so], pmatch.rm_eo - pmatch.rm_so ); //Make sure there's a null byte substring[pmatch.rm_eo - pmatch.rm_so] = 0; //Print it out printf( "Match\n" ); printf( "\"%s\"\n", substring ); } //Release the regular expression regfree( &preg ); return EXIT_SUCCESS; } </code></pre> <p>它的输出是:</p> <pre><code>Compiled 1 7 Match "esting" </code></pre> <p>为什么C程序会在结果中包含“ting”?我有没有办法排除“婷”的部分?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>pmatch</code>是整个匹配项,而不是第一个带圆括号的子表达式。在</p> <p>尝试将<code>pmatch</code>更改为2个元素的数组,然后将2传递给<code>regexec</code>,并使用<code>[1]</code>元素来获得子表达式匹配。在</p> <p>对于其他引用了C和Python之间的差异以及不同类型正则表达式的人来说,这些都是不相关的。这个表达式很简单,这是行不通的。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django restfram生成PDF
5 回答
无法使用Django Rest框架发送压缩的gzip数据
6 回答
无法使用Django rest框架进行身份验证(请求用户=匿名用户)
3 回答
无法使用Django、Python和JavaScrip触发onclick函数
7 回答
无法使用Django.views.generic.View保存表单
3 回答
无法使用Django(python 2.7,OS X 10.11.1)
4 回答
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
2 回答
无法使用Django\u mssql\u后端迁移到外部hos
10 回答
无法使用Django&Python3.4连接到MySql
4 回答
无法使用Django+nginx上载媒体文件
5 回答
无法使用Django1.6导入名称模式
2 回答
无法使用Django1.7和mongodb登录管理站点
9 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
7 回答
无法使用Djangockedi验证CBV中的字段
1 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
1 回答
无法使用Djangofiler djang上载文件
1 回答
无法使用Djangokronos
9 回答
无法使用Djangomssql provid
3 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
6 回答