javascript - 即使正则表达式说“如果相同的字符在后面/前面则不匹配”,字符仍然匹配
问题描述
我想匹配星号之间的单词:
This is a *test.*
这是正则表达式:
\*(.*?)\*
但如果它被两个或多个星号包围,我不想匹配这个词:
This is a **test.**
所以我更新了正则表达式以反映这一点:
(?<!\*)\*(.*?)\*(?!\*)
但是,**test**
仍在匹配中。
为什么是这样?以及如何解决?
解决方案
.
匹配任何内容(换行符除外).*?
可能包含*
s - 匹配的子字符串基本上扩展为包含内部*
s,而外部*
s 与 s 匹配\*
,因此后视和前瞻仍然得到满足。
将内部组更改为不匹配*
s:
(?<!\*)\*([^*]+)\*(?!\*)
^^^^^^^
推荐阅读
- powerbi - 在日期切片器上仅显示月份和年份
- numpy - 使用 as_strided 沿给定轴重复
- android - 获取 IMEI 2 的 ADB cmd 在 android 11 中不起作用
- python - 在使用 x, sr = libeosa.load('file.wav') 加载音频时间序列“x”后将其转换为 mp3,而不将其导出为 wav,然后将其转换为 mp3
- c# - Blazor 服务器:自定义登录页面
- server-side-rendering - 在服务器端使用 Suspense
- python - 以毫秒为单位将字符串转换为日期时间 python
- wpf - XAML:如何将 TabControl 嵌套元素绑定到 TabItem 的附加属性
- python - 如何访问使用 argparse 的导入烧瓶脚本的参数?
- python - 检查程序特定部分的 CPU 消耗