如何使用ruby获取包含汉字的整个字符串?
例如,1.txt 我想要结果:如何使用ruby获取包含汉字的整个字符串?,ruby,regex,Ruby,Regex,例如,1.txt 我想要结果: "攻击力 非常高" "防御力" "防御力是#{example}" 没有xyz,因为它不包含汉字 我测试了/\p{Han}+/,但这不是我想要的 先谢谢你 以下是我的示例:这可能会帮助您:/[^[:ascii:]+/a选择输入中所有非ascii符号的正则表达式。我在你的例子中试过,它实际上只选择了汉字 您正在搜索的正则表达式可能是: /("[^"]*[^[:ascii:]]+[^"]*")/ 如果我没有弄错你需要的东西 我所做的: 字符串应以[^]*[^[:
"攻击力
非常高"
"防御力"
"防御力是#{example}"
没有xyz,因为它不包含汉字
我测试了/\p{Han}+/,但这不是我想要的
先谢谢你
以下是我的示例:这可能会帮助您:/[^[:ascii:]+/a选择输入中所有非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
选项中只有中文和ASCII符号吗?@BorisStrandjev谢谢你的回答。是的。如果这个例子是关于rubular的,你为什么不使用它regex@Esailija因为我不知道如何选择整个句子。现在答案出来了,谢谢。我可以选择整个字符串吗?我的意思是,如果一个字符串包含汉字,那么它将被选中。是的,这正是我想要的,对我帮助很大。谢谢:@goofansu I还添加了regex I的解释constructed@goofansu:请注意,仅包含日语平假名/片假名或包含韩语字符的字符串可以通过测试。您可以对原始正则表达式进行类似的修改,使其仅匹配具有真实汉字的字符串。@nhahdh谢谢。我将使用\p{Han}进行测试。嗨,我的情况是所有这些变量都在一个大字符串中,并从这个大字符串中提取字符串。
# 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