相关疑难解决方法(0)

如何在Java中以不区分大小写的方式检查String是否包含另一个String?

说我有两个字符串,

String s1 = "AbBaCca";
String s2 = "bac";
Run Code Online (Sandbox Code Playgroud)

我想执行一个s2包含在其中的检查返回s1.我可以这样做:

return s1.contains(s2);
Run Code Online (Sandbox Code Playgroud)

我很确定这contains()是区分大小写的,但是我无法通过阅读文档来确定这一点.如果是,那么我想我最好的方法是这样的:

return s1.toLowerCase().contains(s2.toLowerCase());
Run Code Online (Sandbox Code Playgroud)

除此之外,还有另一种(可能更好的)方法来实现这一目标而不关心区分大小写吗?

java string

368
推荐指数
7
解决办法
34万
查看次数

你能不能只对正则表达式不区分大小写的一部分吗?

我已经看到很多关于使整个正则表达式不区分大小写的例子.我想知道的是只有部分表达式不区分大小写.

例如,假设我有一个这样的字符串:

fooFOOfOoFoOBARBARbarbarbAr
Run Code Online (Sandbox Code Playgroud)

如果我想匹配所有出现的"foo"而不管大小写但我只想匹配大写的"BAR"怎么办?

理想的解决方案是适用于正则表达式的东西,但我也有兴趣听到语言特定的(感谢Espo)

编辑

Espo提供的链接非常有用.关于在表达式中打开和关闭修改器的例子很好.

对于我做作的例子,我可以这样做:

(?i)foo*(?-i)|BAR
Run Code Online (Sandbox Code Playgroud)

这使得匹配仅对匹配的foo部分不区分大小写.

这似乎适用于大多数正则表达式实现,除了Javascript,Python和其他一些(如Espo提到的).

我想知道的大问题(Perl,PHP,.NET)都支持内联模式更改.

regex

94
推荐指数
4
解决办法
8万
查看次数

区分大小写并且在相同模式下不敏感

感谢我以前的作业问题的帮助Regex to match tags like <A>, <BB>, <CCC> but not <ABC>,但现在我有另一个功课问题.

我需要匹配标签<LOL>,<LOLOLOL>(3个大写字母,最后两个字母可重复),但不是<lol>(需要大写).

使用以前的作业技术,我试过<[A-Z]([A-Z][A-Z])\1*>.这是有效的,除了还有一个额外的问题:重复部分可以是大小写混合!

所以我还需要匹配<LOLolol>,<LOLOLOlol>因为它是3个大写字母,在大小写混合的情况下可重复的最后两个字母.我知道你可以创建一个不区分大小写的模式/i,这将让我与我<LOLolol>的正则表达式匹配,但它现在也匹配<lololol>,因为前3个字母的检查也不区分大小写.

那我该怎么做?如何敏感地检查前三个字母,然后其他字母不区分大小写?正则表达式可以实现吗?

regex case-sensitive case-insensitive

8
推荐指数
1
解决办法
6827
查看次数

标签 统计

regex ×2

case-insensitive ×1

case-sensitive ×1

java ×1

string ×1