【问题标题】:RegEx for underlining text用于下划线文本的正则表达式
【发布时间】:2021-07-02 08:05:16
【问题描述】:

如何将一行文本与正则表达式匹配,并在其后面加上一行与初始匹配中的字符完全相同的破折号,以实现纯文本下划线。我打算将它与编辑器内的搜索和替换功能(可能在宏范围内)一起使用。可能但不一定是 Visual Studio Code。

This is a heading

应该变成

This is a heading
-----------------

我相信我在几年前读过一个例子,但找不到;我似乎也无法制定搜索查询以从 Google 中获取任何有用的信息(包括问题标题的变体)。如果你是,我也会对此感兴趣。

【问题讨论】:

  • 你为什么要为此使用正则表达式?您是否在使用无法确定字符串长度的语言?
  • 我打算将它与编辑器内的搜索和替换功能(可能在宏范围内)一起使用。可能是 Visual Studio 代码。您的提问很有道理,我在我的问题中添加了这一点。

标签: regex repeat


【解决方案1】:

我能想到的最好的是:

^(.)(?=(.*\n?))|.
  • 替换
$1$2-
syntax note
^(.) match the first character of a line, capture it in group 1
(?=(.*\n?)) then look ahead for the rest of this line and capture it in group 2, including a line break if there's any
|. or a normal character

但文本后面必须有一个换行符,否则下划线只停留在同一行。

不确定它是否有用,但这里是test cases

【讨论】:

  • 哇哇!伟大的!我对如何在不使用编程语言的情况下实现它非常感兴趣。谢谢!
  • 这太酷了!我希望有一个更通用的答案来指出我正确的方向! :) 我省略了另一个细节,因为我认为它无关紧要。有问题的下划线包含在<h5></h5> 中。我可以处理开幕式(^<h5>(.)(?=(.*\n?))|.),但我无法掌握(甚至在测试用例中进行试验)如何处理闭幕式。也许你也知道?你认为我应该把这个添加到问题中吗?
  • 这个不错:)
  • @Floutsch 这会有点复杂,但应该可以:^(?:<.*?>)?(.)(?=(.*?)(?:<.*>)?$(\n?))|.(?:<.*>)? 并替换为$1$2$3-
猜你喜欢
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多