如何对任何行的第二个单词进行分组并分别替换它们

How to group second word of any line and replace them separately

如何将以 ("w" "b) 开头的每一行的第一个单词替换为 ("white" "black") 第二个词都是“K”“Q”“B”到“king”“Queen”“Bishop”

例如下面是我的文字

一周

wQ

wB

wR

wN

wP

bQ

bB

bR

bN

bP

输出应该是

白王

白皇后

白主教

白鸦

白骑士

白兵

&

黑王

黑皇后

黑主教

黑鸦

黑骑士

黑兵

直到结束。

我相信这是可能的,

任何帮助将不胜感激。

  1. 您可以在 https://regex101.com
  2. 中使用 ([wb])([KQBRNP]) 正则表达式
  3. 单击 TOOLS 子面板 Code Generator 以使用您的语言生成代码。
  4. 另请参阅 replace 或类似函数,它可以帮助您通过正则表达式修改字符串。

如果你能用你的语言做这样的事情,也许你不需要常客:

const convert = (word) => { 
  const a = {"W": "White", "B": "Black"}[word[0].toUpperCase()]
  const b = {"K": "King",  "Q": "Queen",
             "B": "Bishop","R": "Rook",
             "N": "Knight","P": "Pawn"}[word[1].toUpperCase()]
  return a + " " + b 
}

console.log(convert("wk"))
console.log(convert("wQ"))
console.log(convert("wB"))
console.log(convert("wR"))
console.log(convert("wN"))
console.log(convert("wP"))
console.log(convert("bk"))
console.log(convert("bQ"))
console.log(convert("bB"))
console.log(convert("bR"))
console.log(convert("bN"))
console.log(convert("bP"))

如果你想转换一个文件并且你已经安装了 python:

  1. 写入文件conv.py:

    重新导入; 代币 = re.compile(r'^[wb][kQBRNP]$') def 转换(行): if (not tokens.match(line)): return line + '\n'; a = {"W": "White", "B": "Black"}[line[0].upper()] b = {“K”:“国王”,“Q”:“女王”, “B”:“主教”,“R”:“车”, "N": "骑士","P": "兵"}[line1.upper()] return f'{a} {b}' 以 open('result.txt', 'w') 作为作者: 打开('test.txt')作为 reader: 行 = reader.readline() 行 = [] 同时(行): writer.write(转换(行)) 行 = reader.readline()

  2. 将您的文件副本创建为 test.txt

  3. 运行: python conv.py

  4. 你会得到result.txt

这可以用 Notepad++ 完成,使用条件替换:

  • Ctrl+H
  • 查找内容:(?:(w)|(b))(?:(k)|(q)|(b)|(r)|(n)|(p))
  • 替换为:(?1White:Black) (?3King:(?4Queen:(?5Bishop:(?6Rook:(?7Knight:Pawn)))))
  • UNCHECK 匹配大小写
  • 检查 环绕
  • 检查 正则表达式
  • 全部替换

解释:

(?:         # non capture group
    (w)         # group 1, letter w
  |           # OR
    (b)         # group 2, letter b
)           # end group
(?:         # non capture group
    (k)         # group 3, letter k
  |           # OR
    (q)         # group 3, letter q
  |           # OR
    (b)         # group 3, letter b
  |           # OR
    (r)         # group 3, letter r
  |           # OR
    (n)         # group 3, letter n
  |           # OR
    (p)         # group 3, letter p
)           # end group

替换:

(?1         # if group 1 exists (i.e. letter w),
  White       # put the word White
:           # else
  Black       # Black
)
 
(?3         # if group 3 exists (letter k)
  King        # then King
:           # else
  (?4         # if group 4 exists (letter q)
    Queen       # then Queen
  :           # else
    (?5         # if group 5 exists
      Bishop      ### and so on...
    :
      (?6
        Rook
      :
        (?7
          Knight
        :
          Pawn
        )
      )
    )
  )
)

截图(之前):

截图(后):