正则表达式匹配不以模式开头或结尾的字符串

时间:2018-09-16 05:49:22

标签: java regex

我正在尝试编写正则表达式。条件是它不应以正斜杠(class Singleton(object): _instances = {} def __new__(class, *args, **kwargs): if class not in class._instances: instance = super().__new__(class) class.__instances[class] = instance return class._instances[class] )开头或结尾。

/是我一直在尝试的方法。如果字符串只有一个字符,则此操作将失败。我应该如何纠正这个问题?

3 个答案:

答案 0 :(得分:2)

将图案分成两部分:

  1. 第一部分-不是以'/'开头
  2. 可选的第二部分-不以'/'结尾。

您将获得以下内容:

^[^/](.*[^/])?$

答案 1 :(得分:1)

匹配第一个字符,然后有一个与0+个字符匹配的可选组,后跟一个非斜杠字符,然后是字符串的结尾:

^[^/](?:.*[^/])?$

https://regex101.com/r/Mp674r/2

答案 2 :(得分:1)

解决此问题的方法比使用RegEx要简单得多。因此,如果愿意,您可以简单地做到:

char first = str.charAt(0); 
char last = str.charAt(str.length() - 1);
if(first != '/' && last != '/') {
  // str is valid.
}

str是要检查的字符串。