Python中文
首页
教程
问答
标签
搜索
登录
注册
使用正则表达式从多行字符串中查找尽可能短的匹配
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个多行<strong>字符串</strong>,具有给定的表示形式:</p> <pre><code>text1 (arbitrary chars and lines)\n <hr>\n Bitmap: ./media/logo.bmp\n text2 (arbitrary chars and lines)\n text3 (arbitrary chars and lines)\n <hr>\n Bitmap: ./media/logo.bmp\n text2 (arbitrary chars lines)\n \n </code></pre> <p>我想匹配字符串中总是出现两次的子字符串(最后总是出现一次):</p> <pre><code><hr>\n Bitmap: ./media/logo.bmp\n text2 (arbitrary chars and lines)\n </code></pre> <p>当我尝试与<code>re.search</code>匹配时,它返回长匹配:</p> <pre><code>regex = re.compile('<hr>\n' 'Bitmap: [\S\n ]*' '$') print(re.search(regex, string).group()) >> '<hr>\nBitmap: ./media/logo.bmp\ntext2 (arbitrary chars and lines)\ntext3 (arbitrary chars and lines)\n<hr>\nBitmap: ./media/logo.bmp\ntext2 (arbitrary chars and lines)\n\n' </code></pre> <p>是否可以使用<code>regex</code>查找短匹配项</p> <p><strong>解决方案</strong>:<br/> 带OR运算符的前瞻返回两个匹配项(一个长一个短):</p> <pre><code>regex = re.compile('<hr>\n' 'Bitmap: [\S]*\n' '[\s\S]*?(?=<hr>|\n\Z)') print(re.findall(regex, string)) >> ['<hr>\nBitmap: ./media/logo.bmp\ntext2 (arbitrary chars and lines)\ntext3 (arbitrary chars and lines)\n', '<hr>\nBitmap: ./media/logo.bmp\ntext2 (arbitrary chars lines)\n'] </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这是有效的:<code><hr>\nBitmap:.*\n(?:.*\n){1,2}</code></p> <p>见:<a href="https://regex101.com/r/i64K0W/3" rel="nofollow noreferrer">https://regex101.com/r/i64K0W/3</a></p> <p>正则表达式中的问题是<code>*</code>,这是贪婪的</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
“matplotlib”ImportError:DLL加载失败:%1不是有效的Win32应用程序
9 回答
“matplotlib”中对字体设置的奇怪响应
5 回答
“matplotlib”如何将绘图调整为图形大小?
8 回答
“Matplotlib不支持生成器作为输入。当我尝试使用scatter()打印列表时”
2 回答
“matplotlib中的点悬停时是否可能显示标签?”
6 回答
“max_features”如何限制sklearn集成模型中的特征数量?
7 回答
“max_poolig2d_3/MaxPool”的1减去2导致维度大小为负
4 回答
“maxiter”参数对中的方法“SLSQP”有效吗scipy.optimize.minimize?
8 回答
“maxRunningTime”选项的格式(谷歌人工智能平台)
6 回答
“MDMenuItem”对象在MDDropdownMenu上没有属性“callback”
7 回答
“Mean”不适用于Pandas数据帧,从Pickle读取16 x 200000+个观察值
6 回答
“MediaDefiningClass”对象不是iterable Djangoimportexp
4 回答
“Medicine”对象没有属性“add”错误
7 回答
“MergeSummary”Op的“inputs”具有与预期类型字符串不匹配的类型[bool,bool,bool,bool,bool,bool,bool]
2 回答
“message”:“所需的请求部分“file\”不存在”
10 回答
“message”是Django还是Python中的保留字?
2 回答
“method”和“method”的实例之间不支持“<”,Python,Djang
10 回答
“method”对象不可订阅。不知道怎么了
4 回答
“Method”对象不是iterab
9 回答
“method”对象不是iterable dataframe python
4 回答