Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby获取包含汉字的整个字符串?_Ruby_Regex - Fatal编程技术网

如何使用ruby获取包含汉字的整个字符串?

如何使用ruby获取包含汉字的整个字符串?,ruby,regex,Ruby,Regex,例如,1.txt 我想要结果: "攻击力 非常高" "防御力" "防御力是#{example}" 没有xyz,因为它不包含汉字 我测试了/\p{Han}+/,但这不是我想要的 先谢谢你 以下是我的示例:这可能会帮助您:/[^[:ascii:]+/a选择输入中所有非ascii符号的正则表达式。我在你的例子中试过,它实际上只选择了汉字 您正在搜索的正则表达式可能是: /("[^"]*[^[:ascii:]]+[^"]*")/ 如果我没有弄错你需要的东西 我所做的: 字符串应以[^]*[^[:

例如,1.txt

我想要结果:

"攻击力
非常高"

"防御力"

"防御力是#{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