如何匹配以大写字母和非大写字母开头的单词?
How Do I Match Words That Start With Capital And Non Capital Letters?
我正在尝试创建一个正则表达式,将匹配像cat
这样的常规单词,但也能够在不同的情况下匹配该单词。
例如,如果我有一个表达式[Cc]at
,正则表达式将匹配,我可以在我的程序中使用它来搜索包含字符串cat
或Cat
的文件。但是,如果我的表达式只是简单的Cat
或cat
,我仍然希望能够在此上进行正则表达式匹配,并仅搜索该表达式的文件。
这是我的尝试:
([^?][A-Z][a-z][^?]*)
…它将匹配[Cc]at
但不匹配cat
或Cat
。
您正在讨论不区分大小写的匹配。它以多种方式启用,取决于正则表达式的风格和上下文:作为后缀修饰符(/cat/i
);作为内联修饰符("(?i)cat"
);作为选项("i"
, re.I
, Pattern.CASE_INSENSITIVE
, RegexOptions.IgnoreCase
,等);或者,如果您正在使用图形搜索/替换小部件,请选中相应的框。
如果你想让只有的第一个字母不区分大小写,没有办法从正则表达式之外做到这一点。要匹配任何单词(可以以大写或小写字母开头,但之后必须只包含小写字母),可以使用[A-Za-z][a-z]*
。或者对应的Unicode字符p{Lu}p{L}*
。
顺便说一下,这是你的regex正在做的:
([^?][A-Z][a-z][^?]*)
- 第一个
[^?]
匹配[
(它意味着任何字符,除了?
,我猜这不是你想要的)。 -
[A-Z]
匹配C
-
[a-z]
匹配c
-
[^?]*
匹配剩余部分。
你也可以使用这些,它会把所有的字母都变成小写然后你可以比较
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;
void toLowerCase(string &str)
{
for (int i = 0; i < str.length(); i++)
{
str[i] = (char)tolower(str[i]);
}
}
int main()
{
string str1 = "Cat";
string str2 = "cAT";
toLowerCase(str1);
toLowerCase(str2);
cout << (str1 == str2);
cin.ignore();
return 0;
}
相关文章:
- 如何在 c++ 中将所有大写字母转换为字符串中的小写字母,反之亦然?
- 大写字母
- 字符数组[]中的小写大写字母C++通过指针
- 如何在德语大写字母 Ä, Ö, Ü, ẞ 上正确应用 C++
- 删除 C 字符串中的大写字母
- 如何检查包含 utf8 文本的 std::string 在 Windows 中是否以大写字母开头?
- 正则表达式表示非连续大写字母和小写字母
- C++函数来检查 char 是否是大写字母,并且不计算给定字符串中的大写字母
- 将大写字母(从 cin 读取)更改为小写
- 删除重复的字母 - 单词更正
- 如何验证小写和大写字母
- opencv :无法通过等待键读取大写字母
- 降低字符串字符,并在转换的大写字母前添加一个_
- 接收字符串,检查大写字母
- 如何计算字符串中大写字母、小写字母和数字的数量
- 如何在c++中用大写字母打印地址(十六进制值)
- Python:获取两个大写字母之间的字符串
- 如何返回第一个字母大写的单词
- 如何匹配以大写字母和非大写字母开头的单词?
- 如何检查一个单词是否以大写字母开头,如果是,则设置条件