繁体   English   中英

re.sub 带括号,删除日文 ruby 字符

[英]re.sub with brackets, removing Japanese ruby characters

我该如何改变

a = "[ruby(空,ruby=そら)]は[ruby(青,ruby=あお)]い。"

进入

"空は青い。" ?

我试过了

re.sub(r"\[ruby\(.,ruby=.\)\]",".",a)

但根本不工作。

鉴于:

a = "[ruby(空,ruby=そら)]は[ruby(青,ruby=あお)]い。"
desired="空は青い。"

您可以使用更改来删除子字符串:

>>> s=re.sub(r'\[ruby\(|,ruby=[^)]+\)\]','',a)
>>> s
空は青い。
>>> s==desired
True

您可以使用

a = re.sub(r'\[ruby\(([^(),]*),[^()]*\)]', r'\1', a)

请参阅正则表达式演示 细节:

  • \[ruby\( - 一个[ruby(文本
  • ([^(),]*) - 第 1 组:除( , )和逗号以外的任何文本,出现零次或多次
  • , - 逗号
  • [^()]* - 除()之外的零个或多个字符
  • \)] - a )]文本。

请参阅Python 演示

import re
a = "[ruby(空,ruby=そら)]は[ruby(青,ruby=あお)]い。"
print( re.sub(r'\[ruby\(([^(),]*),[^()]*\)]', r'\1', a) )
# => 空は青い。

暂无
暂无

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

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