繁体   English   中英

使用正则表达式在打字稿文件中查找文本

[英]find text in a typescript file using regular expressions

我有一个 Storybook,它有一个存储所有类型的 mdx 文件。 为了不手动填写,我决定写一个node js脚本,解析所有文件,收集到一个mdx文件中。 实现已经准备就绪,但无法创建将文件中的所有类型收集到数组中的正则表达式。

file.ts(更漂亮的格式)示例:

import { Border, Font, Input } from 'anyPath/anyFile'
import { CSSProperties } from 'react'

export type FirstType = Border &
  Input & {
    background?: CSSProperties['background']
    paddingVertical?: CSSProperties['padding']
    paddingHorizontal?: CSSProperties['padding']
    liveTimeFont?: Font
    dateTimeFont?: Font
    categoryChampionshipFont?: Font
  }

export type SecondType = Border & {
  scoreFont?: Font
  liveTimeColor?: CSSProperties['color']
  dateTimeColor?: CSSProperties['color']
  scoreColor?: CSSProperties['color']
}

export type ThirdType = Border

export type FourthType = {
  background?: CSSProperties['background']
  paddingVertical?: CSSProperties['padding']
  paddingHorizontal?: CSSProperties['padding']
  liveTimeFont?: Font
}

我想获得以下形式的匹配数组:

[
    "type FirstType = Border & \r\n
      Input & {\r\n
        background?: CSSProperties['background']\r\n
        paddingVertical?: CSSProperties['padding']\r\n
        paddingHorizontal?: CSSProperties['padding']\r\n
        liveTimeFont?: Font\r\n
        dateTimeFont?: Font\r\n
        categoryChampionshipFont?: Font\r\n
      }"
    ,
    "type SecondType = Border & {\r\n
      scoreFont?: Font\r\n
      liveTimeColor?: CSSProperties['color']\r\n
      dateTimeColor?: CSSProperties['color']\r\n
      scoreColor?: CSSProperties['color']\r\n
    }"
    ,
    "type ThirdType = Border"
    ,
    "type FourthType = {\r\n
      background?: CSSProperties['background']\r\n
      paddingVertical?: CSSProperties['padding']\r\n
      paddingHorizontal?: CSSProperties['padding']\r\n
      liveTimeFont?: Font\r\n
    }"
]

我们得到了这样一个正则表达式:

type.+(({[\r\n][\r\n]?(\s+.*[\r\n][\r\n]?)+})|(\w+)) /g

但是 file.ts 中的 FirstType 是不正确的parcing。 请帮我完成正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM