我正在使用https://pythex.org/来测试以下内容:
我想搜索下面的测试字符串,选择所有具有三个大写字母的连续字符。
测试字符串:bcAc BBGFeQFFJaaBx EBBcDDD
[A-Z]{3}
返回包含3个大写字符的所有组,甚至包含4个大写字符的组。我试图使用^[A-Z]{3}$
仅强制使用3个大写字母,但这也不起作用。
在上面的字符串中,我只希望EBB
和DDD
匹配。
答案 0 :(得分:2)
答案 1 :(得分:0)
不确定这是否是最佳解决方案,但我使用了负面的外观和前瞻,以确保三字母位前面或后面没有大写字母。
(?<![A-Z])[A-Z]{3}(?![A-Z])
答案 2 :(得分:0)
如果只想匹配三个大写字母(如EBB
或DDD
),那么考虑哪个字符在< /em> 或 after 三个大写字母的组。
[^A-Z]
表示“正好是一个不是大写字母的字符。”
因此以下两件事是等价的:
正则表达式 | 英语 |
---|---|
[^A-Z][A-Z]{3}[^A-Z] |
(1) 一件事不是大写字母 (2) 三个大写字母 (3) 一件事不是大写字母 |
对于表格内编号列表的格式,我深表歉意。
stackoverflow 支持表外的编号列表,但不支持表内。
我不知道为什么。此外,您不能在 stackoverflow 表中插入手动换行符。
无论如何,我们的正则表达式仍然不理想。
一般问题 | 问题示例 |
---|---|
捕获非大写字母。 | 如果您在字符串 xxxxxbAAAbxxxxx 内搜索,则输出可能包含 bAAAb 而不是 AAA |
字符串的开头和结尾是个问题 | 如果您在 AAAxxxxBBBxxx 内搜索,我们会找到 BBB 而不是 AAA |
一种解决方案如下:
(?:^|[^A-Z])([A-Z]{3})(?:[^A-Z]|$)
考虑文本 John Doe.......303-159-8712......jdoe@gmail.com.......Contractor
...
)。John Doe
和 303-159-8712
等等...正则表达式 | 英语 |
---|---|
| |
竖竖线字符类似于英文单词“or |
^ |
文本的开头(左端) |
$ |
文本的结尾(字符串的最右端) |
[A-Z] |
从 A 到 Z 的一个大写字母 |
[^A-Z] |
A 到 Z 字母以外的一个字符 |
[^A-Z]|$ |
除 A 到 Z 的字母或文本结尾之外的一个字符 |
^|[^A-Z] |
字符串开头 |
(?:[^A-Z]|$) |
问号冒号 (?: ) 表示这是我们要删除/忽略的一段文本。文本块只包含一件事。唯一的东西要么是行尾,要么是大写字母以外的一个字符。 |
你可以测试一下here