小编tch*_*ist的帖子

匹配python正则表达式中的unicode字符

我已经通过Stackoverflow上的其他问题阅读了,但仍然没有更接近.对不起,如果已经回答了这个问题,但我没有得到任何建议.

>>> import re
>>> m = re.match(r'^/by_tag/(?P<tag>\w+)/(?P<filename>(\w|[.,!#%{}()@])+)$', '/by_tag/xmas/xmas1.jpg')
>>> print m.groupdict()
{'tag': 'xmas', 'filename': 'xmas1.jpg'}
Run Code Online (Sandbox Code Playgroud)

一切都很好,然后我尝试用挪威字符(或更像unicode)的东西:

>>> m = re.match(r'^/by_tag/(?P<tag>\w+)/(?P<filename>(\w|[.,!#%{}()@])+)$', '/by_tag/påske/øyfjell.jpg')
>>> print m.groupdict()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groupdict'
Run Code Online (Sandbox Code Playgroud)

如何匹配典型的unicode字符,例如øæå?我希望能够在上面的标签组和文件名的标签组中匹配这些字符.

python regex unicode non-ascii-characters character-properties

26
推荐指数
3
解决办法
4万
查看次数

在Python中只匹配一个unicode字母

我有一个字符串,我想从中提取3组:

'19 janvier 2012' -> '19', 'janvier', '2012'
Run Code Online (Sandbox Code Playgroud)

月份名称可能包含非ASCII字符,因此[A-Za-z]对我不起作用:

>>> import re
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 janvier 2012', re.UNICODE).groups()
(u'20', u'janvier', u'2012')
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 février 2012', re.UNICODE).groups()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>> 
Run Code Online (Sandbox Code Playgroud)

我可以使用,\w但它匹配数字和下划线:

>>> re.search(ur'(\w+)', u'février', re.UNICODE).groups()
(u'f\xe9vrier',)
>>> re.search(ur'(\w+)', u'fé_q23vrier', re.UNICODE).groups()
(u'f\xe9_q23vrier',)
>>> 
Run Code Online (Sandbox Code Playgroud)

我尝试使用[:alpha:],但它不起作用:

>>> re.search(ur'[:alpha:]+', u'février', re.UNICODE).groups()
Traceback (most recent call last):
  File "<stdin>", …
Run Code Online (Sandbox Code Playgroud)

python regex unicode character-properties

26
推荐指数
1
解决办法
9812
查看次数

Perl Regex"不"(负向前瞻)

我并不十分确定这种类型的正则表达式的正确措辞是什么,但基本上我要做的是匹配任何以"/"开头但后面没有"bob /"的字符串,作为示例.

所以这些匹配:

/tom/
/tim/
/steve
Run Code Online (Sandbox Code Playgroud)

但这些不会

tom
tim
/bob/
Run Code Online (Sandbox Code Playgroud)

我确定答案非常简单,但我很难在任何地方寻找"正则表达式".我确信有一个更好的词,我想要什么会带来好结果,但我不确定它会是什么.

编辑:我已经更改了标题,以指出我正在寻找的正确名称

regex perl regex-lookarounds

25
推荐指数
2
解决办法
3万
查看次数

正则表达式和unicode

我有一个解析电视剧集文件名的脚本(例如show.name.s01e02.avi),抓取剧集名称(来自www.thetvdb.com API)并自动将它们重命名为更好的名称(显示名称 - [01x02] ]的.avi)

该脚本工作正常,直到你尝试在具有Unicode显示名称的文件上使用它(我从未真正考虑过的事情,因为我拥有的所有文件都是英文的,所以大部分文件全部都在内[a-zA-Z0-9'\-])

如何允许正则表达式匹配重音字符等?目前正则表达式的配置部分看起来像..

config['valid_filename_chars'] = """0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@£$%^&*()_+=-[]{}"'.,<>`~? """
config['valid_filename_chars_regex'] = re.escape(config['valid_filename_chars'])

config['name_parse'] = [
    # foo_[s01]_[e01]
    re.compile('''^([%s]+?)[ \._\-]\[[Ss]([0-9]+?)\]_\[[Ee]([0-9]+?)\]?[^\\/]*$'''% (config['valid_filename_chars_regex'])),
    # foo.1x09*
    re.compile('''^([%s]+?)[ \._\-]\[?([0-9]+)x([0-9]+)[^\\/]*$''' % (config['valid_filename_chars_regex'])),
    # foo.s01.e01, foo.s01_e01
    re.compile('''^([%s]+?)[ \._\-][Ss]([0-9]+)[\.\- ]?[Ee]([0-9]+)[^\\/]*$''' % (config['valid_filename_chars_regex'])),
    # foo.103*
    re.compile('''^([%s]+)[ \._\-]([0-9]{1})([0-9]{2})[\._ -][^\\/]*$''' % (config['valid_filename_chars_regex'])),
    # foo.0103*
    re.compile('''^([%s]+)[ \._\-]([0-9]{2})([0-9]{2,3})[\._ -][^\\/]*$''' % (config['valid_filename_chars_regex'])),
]
Run Code Online (Sandbox Code Playgroud)

python regex unicode character-properties

23
推荐指数
2
解决办法
1万
查看次数

javascript中的utf-8字边界正则表达式

在JavaScript中:

"ab abc cab ab ab".replace(/\bab\b/g, "AB");
Run Code Online (Sandbox Code Playgroud)

正确地给了我:

"AB abc cab AB AB"
Run Code Online (Sandbox Code Playgroud)

当我使用utf-8字符时:

"?? ??? ??? ?? ??".replace(/\b??\b/g, "AB");
Run Code Online (Sandbox Code Playgroud)

字边界运营商似乎并没有工作:

"?? ??? ??? ?? ??"
Run Code Online (Sandbox Code Playgroud)

这个问题有方法解决吗?

javascript regex unicode utf-8 word-boundary

22
推荐指数
1
解决办法
1万
查看次数

在PHP 5.2中修剪unicode空格

如何修剪a string(6) " page",第一个空格是0xc2a0不间断空格?

我试过trim()preg_match('/^\s*(.*)\s*$/u', $key, $m);.

另一个问题:我怎样才能可靠地复制这些字符?它们似乎被转换为"普通"空间,这使得调试变得困难.

php unicode whitespace utf-8 character-properties

22
推荐指数
3
解决办法
2万
查看次数

如何检测两个句子是否相似?

我想计算两个任意句子彼此之间的相似程度.例如:

  1. 一位数学家找到了解决问题的方法.
  2. 这个问题是由一位年轻的数学家解决的.

我可以使用标记器,词干分析器和解析器,但我不知道如何检测这些句子是否相似.

nlp similarity stanford-nlp opennlp

22
推荐指数
2
解决办法
9653
查看次数

替换字符串中字符的上次出现次数

我有这样的字符串

"Position, fix, dial"
Run Code Online (Sandbox Code Playgroud)

我想用转义双引号(\")替换最后一个双引号(")

字符串的结果是

"Position, fix, dial\"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点.我知道替换第一次出现的字符串.但不知道如何替换最后一次出现的字符串

java string replace last-occurrence

22
推荐指数
2
解决办法
7万
查看次数

如何将所有文件从一个目录移动(并覆盖)到另一个目录?

我知道mv将文件从一个地方移动到另一个地方的命令,但是如何将所有文件从一个目录移动到另一个目录(包含一堆其他文件),如果该文件已存在则覆盖?

unix linux

21
推荐指数
4
解决办法
9万
查看次数

将"直引号"转换为"卷曲行情"

我有一个使用基于Javascript的规则引擎的应用程序.我需要一种方法将常规直引号转换为卷曲(或智能)引号.只做一个string.replacefor 是很容易的["],只有这只会插入一个卷曲引用的情况.

我能想到的最好的方法是用左边的卷曲引号替换第一次出现的引用,用左边的代码替换每个其他的引用,其余的右边卷曲.

有没有办法使用Javascript实现这一目标?

javascript regex quotes smart-quotes

20
推荐指数
2
解决办法
9599
查看次数