python - 正则表达式。是否可以相对于另一个元素设置条件但不匹配它
问题描述
使用 python 3.8 我有一个这样的字符串。
**TEXT** * TEXT * *TEXT* ***TEXT*** fg**TEXT**fgh*TEXT*ghjf***TEXT***g//*TEXT*//**TEXT**//
我只需要找到最后一个*。像 *TEXT *
,但不是在这里***TEXT***
。
但我无法设置与此 *. 我的条件太相似了。
(?<![*]{1})(?<=\w|\s)[*]{1}(?![*])
在图片上做什么
那么,是否可以相对设置一个正则表达式,例如*
TEXT * 但然后以某种方式将其更改为我的情况。
解决方案
您可以断言直接在左侧的是单个*
后跟可选空白字符之间的单词字符。
然后匹配*
并断言*
右边没有。
要在后向断言中使用量词,您可以使用PyPy 正则表达式模块。
(?<=(?<!\*)\*\s*\w+\s*)\*(?!\*)
解释
(?<=
正向向后看,断言直接在左边的是(?<!\*)\*
A*
不直接前置*
\s*\w+\s*
匹配由可选空格字符包围的 1+ 个单词字符
)
近距离观察\*
匹配*
(?!\*)
负前瞻,断言直接向右的不是*
使用带有 re 模块的捕获组,您还可以使用:
(?<!\*)\*\s*\w+\s*(\*)(?!\*)
推荐阅读
- r - 循环遍历 df 子集的唯一值,并使用新变量更新 df
- python - CountVectorzier 用于句子标记列表
- python - 为什么 pipenv 需要 Pipfile 和 Pipfile.lock?
- java - 不被调用之前的方面
- c# - 调用从 proto 文件生成的方法时 grpc 未处理的异常 StatusCode=Unknown
- jmeter - Gitlab ci- 报告 jmeter 测试失败
- java - 在 Java 中可靠地测试执行时间
- java - Spring-Data-Jpa 中一对多映射的 JSON 结果错误
- react-native-maps - 覆盖组件的 React Native Maps 问题
- java - 从 Android 获取 gps 位置