正则表达式:\w - UTF-8 中的“_”+“-”

     2023-02-24     145

关键词:

【中文标题】正则表达式:\\w - UTF-8 中的“_”+“-”【英文标题】:RegEx: \w - "_" + "-" in UTF-8正则表达式:\w - UTF-8 中的“_”+“-” 【发布时间】:2011-01-04 22:51:10 【问题描述】:

我需要一个匹配 UTF-8 字母和数字、破折号 (-) 但不匹配下划线 (_) 的正则表达式,我尝试了这些愚蠢的尝试但没有成功:

([\w-^_])+ ([\w^_]-?)+ (\w[^_]-?)+

\w[A-Za-z0-9_] 的简写,但如果我设置了 u 修饰符,它也匹配 UTF-8 字符。

谁能帮我解决这个问题?

【问题讨论】:

请具体说明“UTF-8 字母” - 你能确认你想要的不仅仅是英文字符吗? @meder:我想要英文重音/外来字符。 【参考方案1】:

试试这个:

(?:[\w\-](?<!_))+

它对编码为 \w(或破折号)的任何内容进行简单匹配,然后具有零宽度的后视功能,以确保刚刚匹配的字符不是下划线。

否则你可以选择这个:

(?:[^_\W]|-)+

这是一种更加基于集合的方法(注意大写的 W)

好的,我在 php 的 PCRE 风格中使用 unicode 获得了很多乐趣:D Peekaboo 说有一个简单的解决方案:

[\pL\pN\-]+

\pL 匹配任何符合字母条件的 unicode(注意:不是单词字符,因此没有下划线),而 \pN 匹配任何看起来像数字的东西(包括罗马数字和更奇特的东西)。 \- 只是一个转义的破折号。虽然不是绝对必要,但我倾向于在字符类中转义破折号...注意,在 unicode 中有许多不同的破折号,因此产生了以下版本:

[\pL\pN\pPd]+

其中“Pd”是标点破折号,包括但不限于我们的减号破折号。 (注意,这里再次没有下划线)。

【讨论】:

将否定 \W 不包括连字符? @dionadar - 这与我的重音字符不匹配。 @codadict 据我所知,连字符不包含在 \w 中——即使是这样,这样说也无妨;) @meder OP 声明:“如果我设置了 u 修饰符,\w [...] 也匹配 UTF-8 字符。” \pN 包括各种数字 - afaik Nd 跳 0-9 舞,而 Nl 包括罗马文字(在 unicode 中,罗马 1 不是字母 I,而是看起来喜欢它)和 No 几乎是他们在其他两个中找不到的所有东西,但仍然是一个数字。【参考方案2】:

我不确定您使用哪种语言,但在 PERL 中您可以简单地编写:[[:alnum:]-]+ 设置正确的语言环境。

【讨论】:

很高兴知道,但我使用的是 PHP(PCRE 引擎)。 在 PHP 和 Rubular (Ruby) 中尝试过,请参阅 rubular.com/regexes/12922 和 rubular.com/regexes/12923。 [:alnum:] 可以在 PCRE 中替换为 \pIsAlnum 你可以尝试 \pL\pN

常用正则表达式

匹配中文字符:[u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]匹配空白行: s* 匹配Email地址:[w!#$%&‘*+/=?^_`{|}~-]+(?:.[w!#$%&‘*+/=?^_`{|}~-]+)*@(?:[w](?:[w-]*[w])?.)+[w](?:[w-]*[w])?匹配国内电话号码:d{3}-d{ 查看详情

正则表达式中的 ^ 和 $ 是啥意思?

】正则表达式中的^和$是啥意思?【英文标题】:Whatdo^and$meaninaregularexpression?正则表达式中的^和$是什么意思?【发布时间】:2020-01-1113:34:13【问题描述】:"\\\\w+@\\\\w+[.]\\\\w+"和"^\\\\w+@\\\\w+[.]\\\\w+$"有什么区别?我... 查看详情

正则表达式中的 ^ 和 $ 是啥意思?

】正则表达式中的^和$是啥意思?【英文标题】:Whatdo^and$meaninaregularexpression?正则表达式中的^和$是什么意思?【发布时间】:2022-01-2320:44:18【问题描述】:"\\\\w+@\\\\w+[.]\\\\w+"和"^\\\\w+@\\\\w+[.]\\\\w+$"有什么区别?我... 查看详情

正则表达式中的 ^ 和 $ 是啥意思?

】正则表达式中的^和$是啥意思?【英文标题】:Whatdo^and$meaninaregularexpression?正则表达式中的^和$是什么意思?【发布时间】:2011-10-1800:48:25【问题描述】:"\\\\w+@\\\\w+[.]\\\\w+"和"^\\\\w+@\\\\w+[.]\\\\w+$"有什么区别?我... 查看详情

正则表达式中的 ^ 和 $ 是啥意思?

】正则表达式中的^和$是啥意思?【英文标题】:Whatdo^and$meaninaregularexpression?正则表达式中的^和$是什么意思?【发布时间】:2022-01-2206:55:14【问题描述】:"\\\\w+@\\\\w+[.]\\\\w+"和"^\\\\w+@\\\\w+[.]\\\\w+$"有什么区别?我... 查看详情

正则表达式

https://www.oschina.net/question/12_9507中括号[abc] 表示匹配上中括号中的任一个字符均可[0-9]只匹配数字等同于[d][a-zA-Z0-9_]==[w][0-9]+表示匹配任一个数字匹配无数次[0-9]{9}匹配9次  代码说明.匹配除换行符以外的任意字符w匹配字... 查看详情

如何使用正则表达式指定字符串分隔符?

】如何使用正则表达式指定字符串分隔符?【英文标题】:Howtospecifystringdelimiterusingregex?【发布时间】:2022-01-2306:03:27【问题描述】:我有一个字符串\'w_600,h_600/c_overlay:c_fit,w_570,h_256/c_crop,w_600,h_600/main_image,g_center,y_-157,x_0/c_overlay:c... 查看详情

251正则表达式(代码片段)

1.正则表达式概述1.1什么是正则表达式正则表达式(RegularExpression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用... 查看详情

PHP正则表达式中的UTF-8 [重复]

】PHP正则表达式中的UTF-8[重复]【英文标题】:UTF-8inPHPregularexpressions[duplicate]【发布时间】:2011-09-1811:25:21【问题描述】:我需要正则表达式方面的帮助。我的字符串包含unicode字符,下面的代码不起作用。前四个字符必须是数字... 查看详情

正则表达式re模块

#在线调试工具:tool.oschina.net/regex/#importre#w匹配字母数字下划线W:非字母数字下划线#print(re.findall(‘w‘,‘as213df_*|d‘))#[‘a‘,‘s‘,‘2‘,‘1‘,‘3‘,‘d‘,‘f‘,‘_‘,‘d‘]#print(re.findall(‘W‘,‘as213df_*|d‘))#[‘*‘,‘|‘]#print(... 查看详情

utf-8中的php正则表达式单词边界匹配

】utf-8中的php正则表达式单词边界匹配【英文标题】:phpregexwordboundarymatchinginutf-8【发布时间】:2011-01-2620:00:35【问题描述】:我在utf-8php文件中有以下php代码:var_dump(setlocale(LC_CTYPE,\'de_DE.utf8\',\'German_Germany.utf-8\',\'de_DE\',\'german\'))... 查看详情

正则表达式(代码片段)

用户名正则,4-16位(字母、数字、下划线、减号)^[a-z0-9_-](4,16)$密码强度正则(最少六位,至少包括一个大写字母、一个小写字母、一个数字、一个特殊符号)^[A-Z+a-z+0-9+]((?=[x21-x7e]+)[^A-Za-z0-9])6,$email正则(来自网络)^w+([-+.]w+)*@... 查看详情

d21_1.1_正则表达式_单个字符匹配

#### re.findall 找到所有与正则表达式相匹配的字符串语法:lst=re.findall(正则表达式,字符串)#(1)预定义字符集#d匹配数字#D匹配非数字#w匹配字母或数字或下划线(正则函数中,支持中文的匹配)#W匹配非字母或数字或下划线#s匹配任... 查看详情

正则表达式前瞻丢弃匹配

】正则表达式前瞻丢弃匹配【英文标题】:Regexlookaheaddiscardamatch【发布时间】:2021-11-1523:16:54【问题描述】:我正在尝试进行正则表达式匹配,它完全放弃了前瞻。\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*这是比赛,这是我的regex10... 查看详情

正则表达式 - 还提取带有 www 的 URL

】正则表达式-还提取带有www的URL【英文标题】:Regex-ExtractalsoURLswithwww【发布时间】:2021-04-1615:22:44【问题描述】:我使用这个正则表达式来查找URL:(http|ftp|https):\\/\\/([\\w\\-_]+(?:(?:\\.[\\w\\-_]+)+))([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?... 查看详情

正则表达式

字符类字符类与一组字符中的任何一个字符匹配。  .  通配符:与除 之外的任何单个字符匹配。 若要匹配原意句点字符(.或u002E),您必须在该字符前面加上转义符(.)。a.e"have"中的"ave","mate"中的"ate"w与任何... 查看详情

python正则表达式抓取邮箱(代码片段)

 emailRegex=r"[-_\w\.]0,64@([-\w]1,63\.)*[-\w]1,63"email=re.search(emailRegex,"str")用户名中字符主要有大小写字母,下划线_,阿拉伯数字,点号。并且有长度限制0,64,用字符组限制为[-_\w\.]0,64中间用@分割开主机名则有多种情况,通过域名... 查看详情

.Net 正则表达式:单词字符 \w 是啥?

】.Net正则表达式:单词字符\\\\w是啥?【英文标题】:.Netregex:whatisthewordcharacter\\w?.Net正则表达式:单词字符\\w是什么?【发布时间】:2011-03-0105:20:55【问题描述】:简单的问题:c#、.net中\\w这个词的模式是什么?我的第一个想... 查看详情