regex - 仅在有 3 行时捕获文本的正则表达式
问题描述
我有这个 regex1 :
(\w+)\n#(\w+)_(\w+)\n(\w+)
这捕获了以下 text1 :
randomtext
#randomteeexxt_randomqlsdfjml
randomagain
但有时我在 text2 中有第四行:
randomtext
#randomteeexxt_randomqlsdfjml
randomagain
stillrandom
因此,以下 regex2 有效:
(\w+)\n#(\w+)_(\w+)\n(\w+)\n(\w+)
regex2 与 text1 的任何内容都不匹配,这就是我想要的。
regex1 匹配 text2 的前 3 行,但我不想要它。
我希望 regex1 与 text2 的任何内容都不匹配。
解决方案
您可以尝试在当前模式周围放置锚点,以确保它适用于整个输入:
^(\w+)\n#(\w+)_(\w+)\n(\w+)$
以下是如何在 JavaScript 中使用此模式的示例:
var str_pass = 'AAA\n#BBB_CCC\nDDD';
var str_fail = 'AAA\n#BBB_CCC\nDDD\nEEE';
console.log(/^\w+\n#\w+_\w+\n\w+$/.test(str_pass));
console.log(/^\w+\n#\w+_\w+\n\w+$/.test(str_fail));
推荐阅读
- laravel - Laravel Jetstream - 停止多设备登录
- python - For循环用Python中的给定变量列表构建DataFrame
- java - java扫描仪不弹出
- json - 无法访问 URLSession 数据任务功能范围之外的解码 JSON 数据(来自 API)
- php - 在您的集群错误中找不到活动节点 - Elasticsearch
- python - 在 HDF5 C++ 中读取可变长度数组
- c++ - 给出五位数字。判断数字是否至少包含两个相同的数字
- matplotlib - Matplotlib 清除新图的图形/轴
- java - 如何将一个变量的 .2f 值分配给另一个变量?
- android - 使用 Retrofit 上传带有 Content Uri 的图像