有没有办法在Ruby中枚举所有字符的Unicode属性?我可以使用Ruby 1.9的Regexp类来测试给定字符是否具有特定属性(例如,some_char =~ /\p{P}/测试是否some_char是标点符号等)......但是因为字符可以具有多个属性((例如,标点符号和 ASCII等等,能够获得所有角色属性的列表会很好.
我可以手工使用unicode_data.txt,或者不管它叫什么,但这看起来像某种事情可能已经在某处完成了.UnicodeUtils似乎没有任何东西沿着这些线,谷歌搜索没有发现任何明显的东西.谢谢!
假设您拥有的只是二进制数据而没有预先设定的函数,是否有模式或算法来对字符类型进行分类?
language-agnostic string algorithm unicode character-properties
我觉得失去了与使用RegexBuddy给出的正则表达式的Unicode属性,我不能对任何数量的属性和数学符号属性的区别似乎只匹配+,但不-,*,/,^例如.
RegexBuddy Unicode Properties http://i47.tinypic.com/mbqw6w.png
是否有关于正则表达式Unicode属性的示例的文档/参考?
长话短说:
>>> re.compile(r"\w*").match(u"Français")
<_sre.SRE_Match object at 0x1004246b0>
>>> re.compile(r"^\w*$").match(u"Français")
>>> re.compile(r"^\w*$").match(u"Franais")
<_sre.SRE_Match object at 0x100424780>
>>>
Run Code Online (Sandbox Code Playgroud)
为什么它不与Unicode字符匹配的字符串^,并$在正则表达式?据我所知,^代表字符串(行)的开头和$- 结尾.
我有一个Perl正则表达式/\W/i匹配所有非字母数字字符,但它也匹配我想忽略的空格.如何使其与空格以外的非字母数字字符匹配?
我想用一个unicode友好的版本替换下面的正则表达式,它将捕获像http://➡.ws和其他非ascii IRI这样的东西.目的是从用户的文本中获取这些文本并对其进行编码并将其标记为真实链接.
Python提供了一个re.UNICODE标志,它改变了\ w的含义,但在这种情况下(我可以看到)它并不是非常有用,因为它被定义为"字母数字字符和下划线",而不是我所有的下面的字符类都包括下划线.
domain_regex = re.compile(r"""
(
(https?://)
(
[0-9a-zA-Z]
[0-9a-zA-Z_-]*
\.
)+
[a-zA-Z]{2,4}
)
| # begins with an http scheme followed by a domain, or
(
(?<! # negative look-behind
[0-9a-zA-Z.@-]
)
(
[0-9a-zA-Z]
[0-9a-zA-Z_-]*
\.
)+
# top-level domain names
com|ca|net|org|edu|gov|biz|info|mobi|name|
us|uk|fr|au|be|ch|de|es|eu|it|tv|cn|jp
)
""", re.VERBOSE)
Run Code Online (Sandbox Code Playgroud)
更多非ascii域名:
如何测试符号中的第一个字符是否是lisp中的字母?我知道它与alpha-char-p函数有关.
我需要检索文件中字符的字符位置.我怎么能用Vi做到这一点?
是否有一个简单的正则表达式来匹配所有unicode引号?或者是否必须像这样手动编码:
quotes = ur"[\"'\u2018\u2019\u201c\u201d]"
Run Code Online (Sandbox Code Playgroud)
谢谢你的阅读.
布赖恩
我有一个任意长度的Type String列表,我需要确保列表中的每个String元素是字母数字或数字,没有空格和特殊字符,如- \ / _等.
接受的字符串示例包括:
J0hn-132ss/sda
Hdka349040r38yd
Hd(ersd)3r4y743-2\d3
123456789
Run Code Online (Sandbox Code Playgroud)
不可接受的字符串示例包括:
Hello
Joe
King
Run Code Online (Sandbox Code Playgroud)
等等基本上没有话语.
我目前正在使用stringInstance.matches("regex")但不太确定如何编写适当的表达式
if (str.matches("^[a-zA-Z0-9_/-\\|]*$")) return true;
else return false;
Run Code Online (Sandbox Code Playgroud)
true对于不符合我提到的格式的单词,此方法将始终返回.
我正在用英语寻找的正则表达式的描述类似于:
任何字符串,其中字符串包含来自(a-zA-Z和0-9 AND特殊字符)
或(0-9 AND特殊字符)的字符
或者(0-9)
编辑:我已经提出了下面的表达方式,但是我认为它可能很糟糕,因为它不清楚或复杂.
表达方式:
(([\\pL\\pN\\pP]+[\\pN]+|[\\pN]+[\\pL\\pN\\pP]+)|([\\pN]+[\\pP]*)|([\\pN]+))+
Run Code Online (Sandbox Code Playgroud)
我用过这个网站来帮助我:http ://xenon.stanford.edu/~xusch/regexp/analyzer.html
请注意我还是新手的正则表达式
这套RegEx有什么问题/^[\p{L}\p{N}]+/u.当我的高级输入%openminded时正则表达式返回false.我需要它接受这种格式
%openminded
100%openminded
openminded 100%
我需要在表达式中添加什么?因此,即使用户%首先输入或任何特殊字符,它也会接受输入.