Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java模式获取扩展名为的页面名_Java_Regex - Fatal编程技术网

java模式获取扩展名为的页面名

java模式获取扩展名为的页面名,java,regex,Java,Regex,对于URL,要求是获取stackoverflow。 用于获取此页面名称的模式是什么? 子字符串可以使用,但我了解到模式匹配器的性能会更好 对于特定URL,您可以使用: String url = "http://questions/ask/stackoverflow.xhtml"; String pname = url.split("/")[4].split("\\.")[0]; 对于基于模式的解决方案而言,更有用的(在正则表达式中,而不是在性能方面)考虑如下: String url = "ht

对于URL,要求是获取stackoverflow。 用于获取此页面名称的模式是什么?
子字符串可以使用,但我了解到模式匹配器的性能会更好

对于特定URL,您可以使用:

String url = "http://questions/ask/stackoverflow.xhtml";
String pname = url.split("/")[4].split("\\.")[0];

对于基于模式的解决方案而言,更有用的(在正则表达式中,而不是在性能方面)考虑如下:

String url = "http://questions/ask/stackoverflow.xhtml";
Pattern pt = Pattern.compile("/(?![^/]*/)([^.]*)\\.");
Matcher matcher = pt.matcher(url);
if(matcher.find()) {
    System.out.println("Matched: [" + matcher.group(1) + ']');
    // prints Matched: [stackoverflow]
}

对于该特定URL,您可以使用:

String url = "http://questions/ask/stackoverflow.xhtml";
String pname = url.split("/")[4].split("\\.")[0];

对于基于模式的解决方案而言,更有用的(在正则表达式中,而不是在性能方面)考虑如下:

String url = "http://questions/ask/stackoverflow.xhtml";
Pattern pt = Pattern.compile("/(?![^/]*/)([^.]*)\\.");
Matcher matcher = pt.matcher(url);
if(matcher.find()) {
    System.out.println("Matched: [" + matcher.group(1) + ']');
    // prints Matched: [stackoverflow]
}

我猜正则表达式解决方案会更复杂(而且可能更慢)。以下是没有他们我会怎么做:

public static String getFilename(String s) {
  int lastSlash = s.lastIndexOf("/");
  if (lastSlash < 0) return null;
  int nextDot = s.indexOf(".", lastSlash);
  return s.substring(lastSlash+1, (nextDot<0) ? s.length() : nextDot);
}

String url = "http://questions/ask/stackoverflow.xhtml";
getFilename(url); // => "stackoverflow"
公共静态字符串getFilename(字符串s){
int lastSlash=s.lastIndexOf(“/”);
if(lastSlash<0)返回null;
int nextDot=s.indexOf(“.”,最后斜杠);
返回s.substring(lastsslash+1,(nextDot“stackoverflow”
当然,如果URL没有文件名,那么您将获得主机名。您最好解析一个URL,提取其中的文件部分,然后删除路径和扩展名。类似于以下内容:

public static String getFilename2(String s) {
  URL url = null;
  try {
    url = new URL(s);
  } catch (MalformedURLException mue) { return null; }
  String filePart = url.getFile();
  if (filePart.equals("")) return "";
  File f = new File(filePart);
  String filename = f.getName();
  int lastDot = filename.lastIndexOf(".");
  return (lastDot<0) ? filename : filename.substring(0, lastDot);
}
public静态字符串getFilename2(字符串s){
URL=null;
试一试{
url=新的url;
}catch(畸形异常mue){return null;}
字符串filePart=url.getFile();
if(filePart.equals(“”)返回“”;
文件f=新文件(文件部分);
字符串文件名=f.getName();
int lastDot=filename.lastIndexOf(“.”);

return(lastDot我想正则表达式的解决方案会更复杂(而且可能会更慢)。下面是我在没有它们的情况下的实现方法:

public static String getFilename(String s) {
  int lastSlash = s.lastIndexOf("/");
  if (lastSlash < 0) return null;
  int nextDot = s.indexOf(".", lastSlash);
  return s.substring(lastSlash+1, (nextDot<0) ? s.length() : nextDot);
}

String url = "http://questions/ask/stackoverflow.xhtml";
getFilename(url); // => "stackoverflow"
公共静态字符串getFilename(字符串s){
int lastSlash=s.lastIndexOf(“/”);
if(lastSlash<0)返回null;
int nextDot=s.indexOf(“.”,最后斜杠);
返回s.substring(lastsslash+1,(nextDot“stackoverflow”
当然,如果URL没有文件名,那么您将获得主机名。您最好解析一个URL,提取其中的文件部分,然后删除路径和扩展名。类似于以下内容:

public static String getFilename2(String s) {
  URL url = null;
  try {
    url = new URL(s);
  } catch (MalformedURLException mue) { return null; }
  String filePart = url.getFile();
  if (filePart.equals("")) return "";
  File f = new File(filePart);
  String filename = f.getName();
  int lastDot = filename.lastIndexOf(".");
  return (lastDot<0) ? filename : filename.substring(0, lastDot);
}
public静态字符串getFilename2(字符串s){
URL=null;
试一试{
url=新的url;
}catch(畸形异常mue){return null;}
字符串filePart=url.getFile();
if(filePart.equals(“”)返回“”;
文件f=新文件(文件部分);
字符串文件名=f.getName();
int lastDot=filename.lastIndexOf(“.”);

返回(LastDot url可以是任何内容。但我们必须只找到页面名。在这种情况下,StackOverflow最好使用我的基于模式的解决方案,这将适用于任何url。最佳解决方案是使用
url
对象,这将适用于正则表达式未考虑的所有url。url可以是任何内容。但我们有只查找页面名。在这种情况下,StackOverflow最好使用我的基于模式的解决方案,这将适用于任何URL。最好的解决方案是使用
URL
对象,这将适用于正则表达式未考虑的所有URL。使用
URL
对象是最正确的方法,它将g为了正确处理任何格式正确的URL,一些特殊正则表达式将在某个地方中断某些输入。使用
URL
对象是最正确的方法,它将正确处理任何格式正确的URL,一些特殊正则表达式将在某个地方中断某些输入。