正则表达式显示句子的首字母,用星号或点替换其余字母

正则表达式显示句子的首字母,用星号或点替换其余字母

我尝试找到一个正则表达式来替换这种格式的文本

balle spaziali
bambole e botte
calda emozione
fuori di testa
giovani diavoli
ragazze vincenti
ore contate

这样

b.... s.......
b...... e b.....
c.... e......
f.... d. t....
g...... d......
r...... v.......
o.. c......

你有主意吗?

我使用 notepad++ 作为文本编辑器,我不知道是否需要批处理或 powershell 脚本。
感谢您的任何建议

答案1

  • Ctrl+H
  • 找什么:(?<![^a-z])(?<!^)[a-z]
  • 用。。。来代替:.
  • 取消选中 相符
  • 查看 环绕
  • 查看 正则表达式
  • Replace all

解释:

(?<![^a-z])     # negative lookbehind, make sure we haven't a non-letter before
(?<!^)          # negative lookbehind, make sure we aren't at the beginning of line
[a-z]           # a letter

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

您只需要一个正则表达式来识别要转换的字符。这很简单,以下任一方法都可以:\B\S, 或\B\w

现在您需要一个工具来将所有匹配的字符转换为.

我不用 notepad++,所以不知道你会怎么做。不过用我的执行文件正则表达式查找/替换命令行实用程序。

假设您想要转换文件“file.txt”:

jrepl "\B\S" "." /f file.txt /o -

或者

jrepl "\B\w" "." /f file.txt /o -

如果您将命令放在批处理脚本中,则需要使用,call jrepl因为 JREPL 本身就是一个批处理脚本。如果没有 CALL,您将无法返回到您的脚本。

您还可以转换管道文本。这是一个简单示例:

C:\test>echo hello world|jrepl "\B\S" "."
h.... w....

答案3

基于@dbenham RegEx 的 Powershell 版本

(Get-Content "Filepath") -replace '\B\w','.' | Set-Content "Filepath"

相关内容