Java中如何用正则表达式来提取string中两个/里面之间的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中如何用正则表达式来提取string中两个/里面之间的内容?相关的知识,希望对你有一定的参考价值。

比如有这个string:<pd>aaa/b/cc/dd/ff/e/</pd>
string基本机构一定是<pd>...../..../.../../.....</pd> 有可能有多个/../
我希望得到b, dd,e
需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。

参考技术A String s = "aaa/b/cc/dd/ff/e/";
Pattern pattern2 = Pattern.compile("/(.*?)/");
Matcher matcher2 = pattern2.matcher(s);
while(matcher2.find())
System.out.println(matcher2.group(1));
追问

Pattern.compile("/(.*?)/");
这个可以,那如果我需要前后分别加上和
呢?
是不是这个?Pattern.compile("/(.*?)/");

从string:aaa/b/cc/dd/ff/e/
中取出b dd e

我刚刚试验了下,好像不行。而且如果单纯用("/(.*?)/");是取不到第一个的。

追答

第一步,先找出和之间内容,然后第二步,再用我那个。第一步那么简单不用教了吧。

本回答被提问者采纳
参考技术B 要b...dd...e 是吧,java的我不会写,但正则给你,自己打双斜 [\\/]

pattern = "^(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)";

print matcher.group (1, 2, 3)
参考技术C public class Test

public static void main(String[] args)
String str = "<pd>aaa/b/cc/dd/ff/e/</pd>";
String[] ary = str.substring("<pd>".length(), str.length() - "</pd>".length()).split("/");

for(int i = 1; i < ary.length; i+=2)
System.out.println(ary[i]);



---------------
b
dd
e追问

方法很好,但有2个问题:
第一需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。

参考技术D Java这个很是外行,不好意思

在前台页面中如何用正则表达式判断文本框中

您好,您的问题我已经看到了,正在整理答案,请稍等一会儿哦~

答案:

判断的话,也就是if条件语句,再在语句中使用一些 正则表达式 规则,就可以了。具体也不知道您要判断啥。下面为你提供一个验证身份证的代码。不妨借鉴一下。正则表达式 规则的话,直接百度:正则表达式  ,最后加入自己的提示语句就OK了。
<tr>
<td>身份证(15或18为)</td>
<td><input type="text" id="cart"  name="cart" size=20 value="" /></td>
</tr>
var cart=document.getElementById("cart").value;
if(cart==""||cart=='null'||cart=='undefined')
alert("您的身份证不能为空");
document.getElementById("cart").focus();
return false;


var len=cart.length;
//验证身份证是15位且18位
if(len!=15&&len!=18)
alert("您的身份证输入有误");
return false;


//验证身份证是15位
if(len==15)
var pattern=/^\\d15$/;
if(!pattern.test(cart))
alert("15位身份证输入有误");
document.getElementById("cart").focus();
return false;



//验证身份证是18位
if(len==18)
var pattern=/^\\d18|\\d17[X]1$/;

if(!pattern.test(cart))
alert("18位身份证输入有误");
document.getElementById("cart").focus();
return false;

以上是给您解答的问题,若还有其它需求帮助,我一直都在,欢迎随时咨询,如果我的回答对您有帮助的话请给五星好评,支持一下。感谢您的耐心等待与支持!祝您身体健康,万事如意心想事成。️️️

参考技术A 判断的话,也就是if条件语句,再在语句中使用一些 正则表达式 规则,就可以了。具体也不知道宝宝要判断啥。下面为你提供一个验证身份证的代码。不妨借鉴一下。正则表达式 规则的话,直接百度:正则表达式 ,最后加入自己的提示语句就OK了。
<tr>
<td>身份证(15或18为)</td>
<td><input type="text" id="cart" name="cart" size=20 value="" /></td>
</tr>
var cart=document.getElementById("cart").value;
if(cart==""||cart=='null'||cart=='undefined')
alert("您的身份证不能为空");
document.getElementById("cart").focus();
return false;


var len=cart.length;
//验证身份证是15位且18位
if(len!=15&&len!=18)
alert("您的身份证输入有误");
return false;


//验证身份证是15位
if(len==15)
var pattern=/^\d15$/;
if(!pattern.test(cart))
alert("15位身份证输入有误");
document.getElementById("cart").focus();
return false;



//验证身份证是18位
if(len==18)
var pattern=/^\d18|\d17[X]1$/;

if(!pattern.test(cart))
alert("18位身份证输入有误");
document.getElementById("cart").focus();
return false;

参考技术B 要在前台页面中使用正则表达式来判断文本框中的内容,可以使用 JavaScript 的 RegExp 对象。
以下是一个基本的 JavaScript 示例,用于检查文本框中是否输入了一个有效的电子邮件地址:
javascript
// 获取文本框的值var email = document.getElementById("email").value;// 创建一个正则表达式对象,用于匹配电子邮件地址的模式var emailPattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]2,3$/;// 检查输入是否符合模式if(emailPattern.test(email)) alert("输入的电子邮件地址有效!");
else alert("请输入一个有效的电子邮件地址。");


在上面的示例中,我们首先获取文本框的值,然后使用正则表达式对象(emailPattern)来匹配一个有效的电子邮件地址模式。接下来,我们使用 test() 方法来检查输入的值是否与模式匹配。如果匹配成功,弹出一个消息框显示输入的电子邮件地址有效;否则弹出一个消息框,提示用户输入有效的电子邮件地址。
需要注意的是,正则表达式的模式可以根据需要进行调整。在上面的示例中,我们使用的是一个基本的电子邮件地址模式,但是如果你需要检查其他类型的输入,你可能需要修改正则表达式的模式。
参考技术C 判断的话,也就是if条件语句,再在语句中使用一些 正则表达式 规则,就可以了。具体也不知道宝宝要判断啥。下面为你提供一个验证身份证的代码。不妨借鉴一下。正则表达式 规则的话,直接百度:正则表达式 ,最后加入自己的提示语句就OK了。 参考技术D 只能输入英文和数字
判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母
/^([a-zA-z_]1)([\w]*)$/g.test(str)
只能输入数字
只能输入中文
只能输入英文
只能输入中文、英文、数字、@符号和.符号
只允许输入英文,且不能粘贴也无法弹出粘贴菜单
只能输入数字和点号(注意:在[^\d\.]里的d不能写成大写D,否则就变成除了数字以外的所有字符)
总而言之:先在里输入οnkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的X换成你想输入的代码就可以了
中文:u4E00-u9FA5
数字:d、0-9
英文:a-z、A-Z
其它符号@,点或其它符号.也可以多个,用\隔开就行了.
例如:
中、英文和数字加@符号加点符号:\a-\z\A-\Z0-9\u4E00-\u9FA5\@\.
若想在文本框里不能右键弹出菜单和不能粘贴进复制的信息的话就要在里输入 onKeyDown="fncKeyStop(event)" οnpaste="return false" οncοntextmenu="return false;"

以上是关于Java中如何用正则表达式来提取string中两个/里面之间的内容?的主要内容,如果未能解决你的问题,请参考以下文章

java中如何用Pattern和Matcher类验证日期和时间,怎么写正则表达式?

Oracle中如何用正则表达式检测某个字段是不是带有日文字符

java如何用正则表达式提取#之间的字符串。例如cc#aaaaa#jdi#bbbbb#ji,需要提取aaaaa和bbbbb两个字符串。

ultraedit中如何用正则表达式搜索存在的中文?

如何用excel中的VBA的正则表达式提取出字符串?

js中如何用正则判断字符串中包含百分号