javascript - 我无法与捕获组匹配
问题描述
我想每行交换两个匹配项。PAG30079XZ
例如,在下面的示例中,我想交换2213
AL/PAG31503XZ/ESB/2351/ESB/ABCD/
AR/PAG30079XZ/ESB/2213/ESB/ABCD
BL/PMC16410R7/ESB/1798/ESB/ABCD/
BR/PMC27936XZ/ESB/2444/ESB/ABCD
CL/PMC27377XZ/ESB/2563/ESB/ABCD/
我希望将所需的值放在捕获组中可以解决问题,但这不起作用。
所以我尝试了以下方法:
/(PAG30079XZ)(2213)/g
交换部分将是
$1$2
解决方案
我想,您的任务更笼统,不限于单行和单对字符串。
在源数据中的第 2 行的情况下,您实际上希望在字符
之间交换每行的第二个和第四个“段”,并且./
PAG30079XZ
2213
如果我是对的,请在每个段/
之间使用捕获组。正如我从您的数据中看到的,所有段都包含字母和数字,因此为简单起见,每个组都可以是\w+
(非空的单词字符序列)。\w
实际上也匹配_
,但我认为没关系。
例外是第 4 段,只包含数字,所以这个组可以是
\d+
.
所以整个正则表达式应该是:
^(\w+)\/(\w+)\/(\w+)\/(\d+)
(注意^
- 行锚和引号的开头/
)和替换字符串应该是:
$1/$4/$3/$2
(注意$2
并$4
交换)。
您还应该使用g
选项来执行全局替换并
m
匹配行首^
。
有关工作示例,请参阅https://regex101.com/r/D3K837/1
推荐阅读
- gnome - 无法使用 gnome-builder 运行项目
- python-3.x - 素数分解器引发意外的 TypeError-py3
- c++ - C++ 修改 Djikstra 的算法以给出第二个最短路径
- tensorflow - GCP AI Platform 作业卡住
- java - Intellij Maven 依赖项无法导入
- python - 如何使用 pdfminer.six 提取 PDF 文件中的特定文本
- r - 将所有以 'ID' 结尾的 couns 转换为 tidyverse 中的字符
- python - 带有mysql到exe的Python脚本
- python - 如何在熊猫中加载 sframe 格式文件?
- css - 如何使用 flexbox 对齐一行中的元素?