例如,1.txt
a = "攻击力
非常高"
b = "防御力"
c = "防御力是#{example}"
d = "xyz"
我想要结果:
"攻击力
非常高"
"防御力"
"防御力是#{example}"
并且没有"xyz"
,因为它不包含汉字。
我测试 /(\p{Han}+)/
了,但这不是我想要的。
先感谢您。
这是我的示例:正则表达式示例
这可能会对您有所帮助:/([^[:ascii:]]+)/
选择输入中所有非 ascii 符号的正则表达式。我在你的例子上试过了,它真的只选择了汉字。
您正在搜索的正则表达式可能是:
/("[^"]*[^[:ascii:]]+[^"]*")/
如果我得到了正确的你需要的东西。
我做什么:
"
#"#[^"]*[^[:ascii:]]+[^"]*")
"
字符"#[^"]*#[^[:ascii:]]+[^"]*")
"[^"]*#[^[:ascii:]]+#[^"]*")
"
字符"[^"]*[^[:ascii:]]+#[^"]*#")
"
"[^"]*[^[:ascii:]]+[^"]*#"#)
使正则表达式尽可能简单:
# encoding: utf-8
a = "攻击力
非常高"
b = "防御力"
c = "防御力是example"
d = "xyz"
puts [a,b,c,d].select{|str| str =~ /\p{Han}/ }
# 攻击力
# 非常高
# 防御力
# 防御力是example
or, in case of one string:
# encoding: utf-8
a = "攻击力非常高
防御力
防御力是example
xyz"
puts a.lines.select{|line| line =~ /\p{Han}/ }.join