You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ECMAScript正则表达式转换为VS Code搜索可用格式?

将ECMAScript正则转换为VS Code搜索可用格式

我有一个在ECMAScript模式下可正常运行的正则表达式:/(?<=<TOTA>[^]+\blength=")[^"]+(?="[^]+<\/TOTA>)/g,需要将其转换为VS Code搜索功能支持的格式。相关XML文件示例如下:

<TxDef encoding="EBCDIC" txAdapter="Unisys" appAdapter="pass" xmlTransformer="Unisys" transportAdapter="SystemF" targetTx="" txMapper="" delimiter="" memo="pp">
  <TITA>
      <TxBlock dataTag="" renderTag="Y" memo="" ref="SystemF-TITA-COM-AREA" />
      <TxField id="BCURCD" cname="cc" datatype="9" lengthtype="F" padchar=" " justify="" default="" length="2" lengthExpr="" scale="0" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
      <TxField id="STATUS" cname="c6" datatype="9" lengthtype="F" padchar=" " justify="" default="" length="1" lengthExpr="" scale="0" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
      <TxField id="END" cname="gg" datatype="X" lengthtype="F" padchar=" " justify="" default="" length="1" lengthExpr="" scale="0" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
    </TxBody>
    <TxTail dataTag="" renderTag="Y" memo="" ref="" />
  </TITA>
  <TOTA>
    <TxHead dataTag="" renderTag="Y" memo="" ref="" />
    <TxBody dataTag="CommMsg" renderTag="Y" memo="" ref="">
      <TxRepeat dataTag="TXREC" renderTag="Y" memo="" timesField="" timesValue="-1" name="">
        <TxBlock dataTag="Header" renderTag="N" memo="" ref="SystemF-TOTA-BASIC-TxBlock" />
        <TxSwitch dataTag="" renderTag="N" memo="" switchField="WARN">
          <TxCase dataTag="" renderTag="N" memo="" value="[default]">
            <TxRepeat dataTag="TXREC" renderTag="N" memo="" timesField="" timesValue="1" name="">
              <TxField id="CNAME" cname="ed" datatype="X" lengthtype="F" padchar=" " justify="" default="" length="80" lengthExpr="" scale="0" tagSize="0" lengthSize="0" encoding="UNISYS" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
              <TxField id="AVBAL" cname="b7" datatype="S" lengthtype="F" padchar=" " justify="" default="" length="14" lengthExpr="" scale="2" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
              <TxField id="AVG03" cname="hh" datatype="9" lengthtype="F" padchar=" " justify="" default="" length="13" lengthExpr="" scale="2" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
              <TxField id="AVG1" cname="1m" datatype="9" lengthtype="F" padchar=" " justify="" default="" length="13" lengthExpr="" scale="2" tagSize="0" lengthSize="0" encoding="" shiftInOut="Y" invisibleChar="TrimAndPadRight" memo="" optional="N" overwrite="N" codec="" renderTag="" charFormat="" />
               </TxRepeat>
            </TxRepeat>
          </TxCase >
        </TxSwitch >
      </TxRepeat >
    </TxBody>
    <TxTail dataTag="" renderTag="Y" memo="" ref="" />
  </TOTA>
</TxDef>

转换步骤

  • 移除正则表达式首尾的分隔符/
  • 将原正则中的[^]替换为[\s\S](VS Code支持[^],但[\s\S]兼容性更广泛,确保匹配所有字符包括换行)
  • 移除全局匹配标识g(VS Code搜索默认全局匹配,无需额外声明)

转换后的最终正则:

(?<=<TOTA>[\s\S]+\blength=")[^"]+(?="[\s\S]+<\/TOTA>)

VS Code使用方法

  1. 打开搜索面板(快捷键:Ctrl+F)
  2. 点击搜索框右侧的.*按钮,启用正则表达式模式
  3. 点击旁边的↵按钮(或按Alt+Enter),启用匹配换行功能
  4. 将转换后的正则粘贴到搜索框,即可精准匹配<TOTA>标签范围内所有length属性的值

内容的提问来源于stack exchange,提问作者Jamie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:50:26