求教一正则表达式

ninesea 2009-12-10 10:13:17
xx“aa”bb“cc”yy 取出aa cc
xx“aa“bb”cc”yy 取出aa“bb”cc
...全文
175 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jonay 的回复:]
str = "xx“aabb“cc“ee“cc”yy"; 像这里面的引号都不成对出现.
你给出的都是个别例子,并没有说规则,我也无能为力了
[/Quote]
这个规则很明显啊 但是不好表达
xx“aa”bb“cc”yy 取出aa和cc
xx“aa“bb”cc”yy 取出aa“bb”cc
xx“aa“bb”“cc”yy 取出aa“bb和cc 因为把cc取出来后“aa“bb”这里还是可以找出一对引号的
xx“aa“bb““cc”yy 只能取出aa“bb““cc 因为单独把cc拿出来后“aa“bb“这个不成对了

可以肯定的是起始是上引号“ 结束是下引号” 中间可以是任意字符包括引号 所以要根据里面的引号情况去匹配 其实规则就是我上面说的目的 有个字符串要处理 双引号括起来的内容不处理 我真的没法表达出这个规则
jonay 2009-12-10
  • 打赏
  • 举报
回复
str = "xx“aabb“cc“ee“cc”yy"; 像这里面的引号都不成对出现.
你给出的都是个别例子,并没有说规则,我也无能为力了
swandragon 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ninesea 的回复:]
引用 6 楼 jonay 的回复:
Java codepublicstaticvoid main(String args[]) {
        String regex="(? <=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”;        Pattern p= Pattern.compile(regex);
        String str="xx“aa“bb”cc”yy";//str = "xx“aa”bb“cc”yy";        Matcher m= p.matcher(str);while(m.find()) {
            System.out.println(m.group());
        }
    }\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc



这个还有点缺陷 我有个字符串需要处理 但是不处理引号括起来的
比如
str = "xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
str = "xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
str = "xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
有个难点就是有时需要匹配长的有时需要匹配短的
[/Quote]
这要求太难满足了
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jonay 的回复:]
Java codepublicstaticvoid main(String args[]) {
String regex="(?<=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”; Pattern p= Pattern.compile(regex);
String str="xx“aa“bb”cc”yy";//str = "xx“aa”bb“cc”yy"; Matcher m= p.matcher(str);while(m.find()) {
System.out.println(m.group());
}
}\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc

[/Quote]

这个还有点缺陷 我有个字符串需要处理 但是不处理引号括起来的
比如
str = "xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
str = "xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
str = "xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
有个难点就是有时需要匹配长的有时需要匹配短的
xierangh 2009-12-10
  • 打赏
  • 举报
回复
(?=")[^"]*(\\k<0>)*(?=")
jonay 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ninesea 的回复:]
xx“aa “dd””bb“cc”yy 取出aa “dd” cc


[/Quote]
同样适用
不过不是aa “dd” cc
而是:
aa “dd”
cc
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 swandragon 的回复:]
Java code
String str="xx“aa“bb”cc”yy";
System.out.println(str.replaceAll("xx(.*)yy","$1"));
[/Quote]
不对
String str="xx“aa”bb“cc”yy"; 这个我要的是 aa 和cc
jonay 2009-12-10
  • 打赏
  • 举报
回复

public static void main(String args[]) {
String regex = "(?<=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”;
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
//str = "xx“aa”bb“cc”yy";
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
}
\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc
ninesea 2009-12-10
  • 打赏
  • 举报
回复
xx“aa “dd””bb“cc”yy 取出aa “dd” cc

xierangh 2009-12-10
  • 打赏
  • 举报
回复
".*" 就这样 嘿嘿。
swandragon 2009-12-10
  • 打赏
  • 举报
回复

String str = "xx“aa“bb”cc”yy ";
System.out.println(str.replaceAll("xx(.*)yy","$1"));
jonay 2009-12-10
  • 打赏
  • 举报
回复
不对不对,再让我想想
jonay 2009-12-10
  • 打赏
  • 举报
回复

public static void main(String args[]) {
String regex = "(?<=“).*(?=”)";//你给的例子里双引号是全角,如果是半角刚regex = "(?<=\").*(?=\")";
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
}

aa“bb”cc
shan1119 2009-12-10
  • 打赏
  • 举报
回复
String regex = "((“[^“”]+)+”(([^“”]+”)+)?)";
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
str = "xx“aa”bb“cc”yy";
//str="xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
//str="xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
//str="xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
jonay 2009-12-10
  • 打赏
  • 举报
回复
正则不是万能的,我觉得你应该自己写个解析的,而不是用一个正则表达示来完成
苍蝇①号 2009-12-10
  • 打赏
  • 举报
回复
没有通用规律可循
ninesea 2009-12-10
  • 打赏
  • 举报
回复
不但要引号括起来的内容不处理而且这个引号还要去掉
比如
xx“aa”bb“cc”yy要处理xx bb yy这3串 最后是xxaabbccyy
xx“aa“bb”cc”yy 处理完xx yy之后变成xxaa“bb”ccyy
内容概要:本文系统阐述了基于矩约束的最大熵方法在扩展不确定度评估中的理论与应用,提供了一套完整的Matlab代码实现方案。该方法依据最大熵原理,在仅知样本的均值、方差、偏度、峰度等低阶矩信息的前提下,通过求解拉格朗日乘子,推导出满足这些矩约束且信息熵最大的最优概率密度函数,从而实现对测量结果的非参数化、无偏估计。相较于传统依赖正态分布假设的评估方式,该方法更具普适性与鲁棒性,尤其适用于处理非对称、非高斯等复杂分布的实际测量数据。文中详细论述了理论模型的构建、数值求解算法的设计、概率密度函数的重建过程,并通过典型算例验证了其在提高评估准确性方面的优越性能。; 适合人群:具备概率统计、信息论基础知识及Matlab编程能力,从事精密测量、实验数据分析、质量控制、计量科学等相关领域的研究人员、工程师及研究生。; 使用场景及目标:①解决传统扩展不确定度评估中因错误分布假设导致的系统性偏差问题;②在缺乏先验分布知识的情况下,对复杂测量数据进行客观、稳健的不确定度评定;③为高精度科学实验、工业检测及计量认证提供理论严谨、工具完备的技术支撑。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现,重点关注拉格朗日乘子的迭代求解、熵最大化过程及PDF重构等核心环节,并尝试代入实际数据进行验证与拓展,以充分掌握该方法的应用精髓。
内容概要:本文研究了基于鲸鱼优化算法(WOA)的多无人机三维协同路径规划方法,旨在实现最低成本目标,综合考虑路径长度、飞行高度、环境威胁和转弯角度等多种约束条件。通过构建多目标优化模型,并利用WOA算法进行求解,实现了多无人机在复杂三维空间中的集群避障与路径优化。文中详细阐述了问题建模过程、适应度函数设计、约束处理机制以及算法实现细节,并借助Matlab仿真验证了该方法在路径平滑性、避障能力和成本控制方面的有效性,为多无人机系统的自主协同作业提供了可靠的技术支撑与实践方案。; 适合人群:具备一定优化算法基础和Matlab编程能力,从事无人机控制、智能优化、路径规划等相关领域的科研人员及高校研究生。; 使用场景及目标:①解决复杂三维环境中多无人机协同避障与高效路径规划问题;②学习如何将鲸鱼优化算法应用于多目标工程优化任务;③掌握基于Matlab的智能算法仿真、性能评估与可视化分析方法; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现过程,重点关注目标函数的构建逻辑与多约束条件的处理策略,可通过调整环境参数、初始条件和算法参数开展对比实验,以全面掌握多无人机协同路径规划的核心机制与优化技巧。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧