首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将 REGEX 匹配添加到我的 J2ME 项目?

在 J2ME(Java 2 Platform Micro Edition)项目中添加 REGEX(正则表达式)匹配,我们需要遵循以下几个步骤:

  1. 准备 Java 编程环境: 确保已安装 J2ME 编译器和运行器,如 KDT,用于编译和运行 J2ME 项目。如果没有安装,请访问相关官方网站获取。
  2. 准备 RegexBuddy: RegexBuddy 是一个用于测试和开发正则表达式的免费 IDE。请访问官方网站(https://www.regexbuddy.com/)下载和安装这款工具。
  3. 编写 J2ME 代码: 在 J2ME 项目中编写必要的代码来实现正则表达式匹配。通常,我们会在 javax.microedition.lcdui 包的 EditField 类中创建 Pattern 和/或 Matcher 对象以实现所需功能。

例如,编写一个简单的 EditField 类,它会根据输入字符串中的逗号和空格自动对它们进行分片,并通过调用正则表达式模式来匹配字符串:

代码语言:java
复制
import javax.microedition.lcdui.Editor;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;
import net.iharder.RegexBuddy;
import net.iharder.RegexTester;

import java.util.*;

public class SimpleMatchExample extends List
{

  public SimpleMatchExample()
  {
    TextField[] fields = new TextField[2];

    fields[0] = // ... initializing the first TextField

    fields[1] = new TextField(5); // ... initializing the second TextField

    // 设定输入和自动处理逗号空格分片的规则
    FieldEditorSupport support = new FieldEditorSupport.ListEditor(fields)
    {
      // 根据输入的逗号和空格自动分片的实现
      public void checkValue(Field source, String newValue)
      {
        // 检查是否包含两个以逗号分隔的字符串,并在它们之间添加分片分隔符
        String[] tokens = newValue.split(",");
        StringBuilder result = new StringBuilder("[");
        boolean first = true;
        for (String s : tokens)
        {
          if (!first)
            result.append(',');
          result.append(s);
          first = false;
        }
        result.append("]");
        super.checkValue(source, result.toString());
      }
      };

    add("Replace commas and spaces: ", support);// add() 方法将 J2ME 控制器添加到 J2ME 界面中

        // 添加正则表达式匹配模式
        support.setPattern(Pattern.compile(",", "g"));

    // 添加正则表达式匹配结果处理监听器(可根据需要添加)
    support.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            // 从 EditField 获取新的输入字符串
            String input = ((TextField) e.getSource()).getText();
            int commaPos = input.indexOf(",");
            int spacePos = input.indexOf(" ");

            if (commaPos != -1) // 当输入包含逗号
            {
                // 从逗号后面提取新的 token
                String token = input.substring(commaPos + 1);

                // 将 new token 附加到原始输入字符串
                input = input.substring(0, commaPos);
                ((TextField) e.getSource()).setText(input + token);

                Pattern compile = support.getPattern();
                Matcher matcher = compile.matcher(input);

                // 处理匹配结果
                if (matcher.find())
                {
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Elasticsearch 8.X 复杂分词搞不定,怎么办?

Tokenizer 定义如何将文本切分为词条或 token。例如,使用空格或标点符号将文本切分为单词。...Token Filter 对 Tokenizer 输出词条进行进一步处理,例如转为小写、去除停用词或添加同义词。...也就是说,匹配内容必须从目标字符串开头开始。 [0-9]:这是一个字符类。它匹配从 0 到 9 任何一个数字字符。 +:这是一个量词。...: ik_smart - 使用过滤器: regex_process, remove_length_lower_1 Settings Filter regex_process 类型: pattern_replace...6、小结 当传统默认分词不能达到我们特定、复杂需求时候,记得还有一招:自定义分词。 自定义分词记住三部分组成后,拆解一下复杂问题需求,问题就会迎刃而解。

26511
  • 有趣正则表达式

    regex.jpg 听到正则表达式,大家一定不会陌生。工作项目中也经常使用正则表达式来校验文本是否匹配规则。通常都会直接上网找寻各种格式输入正则匹配式。比如电话/邮件等等。...哼~ 加上条件原则,再来一个正则 const regex2=(url,params)=>{ let resultUrl = url; //以{开头,匹配结果在{之后,以}结尾,匹配结果在...发现这组正则匹配规则可以是 const regex3=(url,params)=>{ let resultUrl = url; //匹配规则更改成不以{开头,用}结尾字符串...一瞬间感觉真是充满趣味性解。看待一个问题,我们从正面(以{开头)和反面(不以{为开头)似乎都能得到我们想要匹配结果~! 问题2 经过上面一段之后,对笔者来说,像是开启了一扇新世界大门。...\\/12\)/g; 最后就能直接匹配到我们想到 tid数字了~ 帅吧~ 撒花~ cheer.gif 总结 正则匹配式不仅能够做文本匹配,还能进行文本截取~(废话!)

    79330

    创建一个模块应用

    [ url(r"^$", views.index, name="index") ] 配置好我们模块应用中urls地址映射之后,需要将这个模块映射关系包含到我根模块mysite映射关系中才能生效...,url地址->polls/ 3.进入项目的映射文件urls.py中进行正则匹配:url(r"^polls", include("polls/urls")),开始打开通过include包含polls.urls...子模块映射文件polls/urls.py 4.进入项目子模块polls映射文件中进行匹配,由于polls/路径已经匹配通过,开始匹配polls/后面的路径-> 路径为:""; 进入polls/urls.py...views.py中视图方法index()返回了一条字符串,打印到我们浏览器页面上 OK,经过上面的分析之后,我们启动项目python3 manage.py runserver,然后通过浏览器进行访问...附注:url(regex, view, kw, name)参数解析 参数regex:这是一个正则表达式,用于匹配接收到url路径,Django会按照顺序进行正则表达式匹配匹配成功就会调用指定资源

    34510

    Django来敲门~第一部分【4. 创建第一个模块应用】

    [ url(r"^$", views.index, name="index") ] 配置好我们模块应用中urls地址映射之后,需要将这个模块映射关系包含到我根模块mysite映射关系中才能生效...请求流程图 1.客户端发起请求:http://localhost:8000/polls 2.项目接收到用户请求,url地址-> polls/ 3.进入项目的映射文件urls.py中进行正则匹配...映射文件中进行匹配,由于polls/路径已经匹配通过,开始匹配polls/后面的路径-> 路径为:""; 进入polls/urls.py中查找对应路径->url(r"^$", view.index...,打印到我们浏览器页面上 OK,经过上面的分析之后,我们启动项目python3 manage.py runserver,然后通过浏览器进行访问 ?...浏览器访问子模块应用 附注:url(regex, view, kw, name)参数解析 参数regex:这是一个正则表达式,用于匹配接收到url路径,Django会按照顺序进行正则表达式匹配

    32910

    写一个自己springMVC?

    我们请求地址会被dispatchservlet这个springMVC核心拦截器拦截,然后dispatchservlet会找到我们想要那个controller里那个方法,并调用。...思想, 实现一个容器来管理我bean; 这个框架和你印象中使用springmvc 很相似,你应该能回想起 springMVC零零点点,然后看看这个简单框架是如何实现这些功能; 首先看下项目工程...我们第一步模仿spring 思想,先找到我们要扫描哪些类,下面是 spring做法, ? 这是我做法: ?...IOC了; 我们为了得到所有bean;在拿到项目的包路径后,可以转换为文件路径,然后再从文件路径中得到所有的类名; 得到类名后,就可以通过反射进行实例化了,然后将这些需要管理东西放到一个容器中管理...404,说明用户路径输错了, 发送异常就报500; 如果匹配成功怎么办?

    47140

    写一个自己springMVC

    这个springMVC核心拦截器拦截,然后dispatchservlet会找到我们想要那个controller里那个方法,并调用。...思想, 实现一个容器来管理我bean; 这个框架和你印象中使用springmvc 很相似,你应该能回想起 springMVC零零点点,然后看看这个简单框架是如何实现这些功能; 首先看下项目工程...dispatchServilet 我们第一步模仿spring 思想,先找到我们要扫描哪些类,下面是 spring做法, 这是我做法: 为什么我通过  String scanPackage...IOC了; 我们为了得到所有bean;在拿到项目的包路径后,可以转换为文件路径,然后再从文件路径中得到所有的类名; 得到类名后,就可以通过反射进行实例化了,然后将这些需要管理东西放到一个容器中管理,...404,说明用户路径输错了, 发送异常就报500; 如果匹配成功怎么办?

    1.2K140

    SpringMVC实现原理

    我们请求地址会被dispatchservlet这个springMVC核心拦截器拦截,然后dispatchservlet会找到我们想要那个controller里那个方法,并调用。...思想, 实现一个容器来管理我bean; 这个框架和你印象中使用springmvc 很相似,你应该能回想起 springMVC零零点点,然后看看这个简单框架是如何实现这些功能; 首先看下项目工程...我们第一步模仿spring 思想,先找到我们要扫描哪些类,下面是 spring做法, ? 这是我做法: ?...IOC了; 我们为了得到所有bean;在拿到项目的包路径后,可以转换为文件路径,然后再从文件路径中得到所有的类名; 得到类名后,就可以通过反射进行实例化了,然后将这些需要管理东西放到一个容器中管理,...404,说明用户路径输错了, 发送异常就报500; 如果匹配成功怎么办?

    47060

    一步步治理隐私权限 | 安卓黑魔法

    name_regex 代表规则匹配,message则标示是提示文案,excludes代表是白名单列表。因为我们诉求其实是统一调用我们定义中间件,素有中间件都在我们白名单列表上。...动态可配置化Lint 这个地方难点就在于如何让lint代码能读取到我配置json文件。.../** * name是完全匹配,nameRegex是正则匹配匹配优先级上name > nameRegex * inClassName是当前需要匹配方法所在类...首先我们可以沿用之前项目内定义好那份动态json文件,之后通过软连接方式直接复制到debugassets文件夹下面。...而更好方案就是通过asm,去对第三方隐私代码进行替换,将他们转包到我中间件内。 这样就能做到多重保险,可以极大程度应对机构审查。

    1.1K50

    使用 OpenTelemetry Collector 分析日志

    (在安装过程中可能已经获取了该项目)。...包含规则用于定义“允许列表”,其中不匹配包含规则任何内容都将从收集器中删除。排除规则用于定义“拒绝列表”,其中与规则匹配遥测数据将从收集器中删除。...但是,仅添加这个映射还不足以添加属性,我们还没有将此 processors 添加到我 pipeline 中,请查看用于日志 pipelines 映射: logs: receivers: [otlp...请注意,这里可能可以进行更复杂匹配,但对于此情况,使用 == 即可。...如果将其添加到 pipeline 中,此 receiver 仅会在发送到指定端口日志上运行。 在此处,传入日志由 regex_parser 操作符解析,该操作符检查传入字符串并设置属性。

    28710

    正则表达式介绍

    匹配重复 贪婪 删除多余空格 字符组 电话号码 v1 更多 re 函数 search 结合 match findall 匹配计数 特殊字符 电话号码 v2 分组 电话号码 v3 正则表达式玩具项目...我们可以看到,在这种情况下匹配与正则表达式完全相同,因此看起来匹配对象内部 match 信息是无关紧要……但是只要我们将选项或重复引入到我正则表达式。...我们再一次看到我正则表达式与 ice 中 rice 匹配,因为 "r" 不在合法字母范围内,但 ice 是。 字符组 是方括号 [] ,无论里面是什么。...如果你想匹配我们已经看过任何其他特殊字符,你可以在它们之前添加一个 \ ,比如 \+ 来匹配一个加号。下一个正则表达式可用于匹配添加表达式,如 "16 + 6" regex = "[\d]+ ?...对于玩具项目来说,这远远不是微不足道,你可以模仿我在这里做

    4.9K00

    Prometheus Operator 使用 AlertmanagerConfig 进行报警配置

    我们去查看 Prometheus Dashboard Alert 页面下面就已经有很多报警规则了,这一系列规则其实都来自于项目 https://github.com/kubernetes-monitoring...我们这里 PrometheusRule name 为 prometheus-k8s-rules,namespace 为 monitoring,我们可以猜想到我们创建一个 PrometheusRule...这就需要查看我们创建 prometheus 这个资源对象了,里面有非常重要一个属性 ruleSelector,用来匹配 rule 规则过滤器,要求匹配具有 prometheus=k8s 和 role...,所以如果我们想要添加自己接收器,我们就可以直接更改这个文件,但是这里内容是 base64 编码过后,如果手动添加内容就非常不方便。...,然后需要重新更新 Alertmanager 对象,添加 alertmanagerConfigSelector 属性去匹配 AlertmanagerConfig 资源对象: # alertmanager-alertmanager.yaml

    5.5K50

    SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易

    此类项目与多数 Visual Studio 项目不同,因为当您尝试调试(或启动而未调试)时,项目将被重新编译,生成程序集以及其中定义所有 SQLCLR 对象将随后部署到 SQL Server,然后注册到...然后,IDE 将运行为项目指定测试脚本。可以在 SQL 脚本和您 .NET 代码中设置断点,这样可以简化调试过程。 添加函数就像将新类添加到任何其他项目类型一样。...仅将一个新项添加项目并且在提示时选择“用户定义函数”。新方法则被添加到包含所有函数局部类。新方法还将有一个适用它 SqlFunction 属性。...通过定义选项和提供模式创建 Regex 实例,然后 IsMatch 方法将被用于确定指定输入是否与模式匹配。...正则表达式是一个非常强大工具,但一定要确保有充分理由应用它们。可能存在用于特定情况更简单且性能更佳工具。 我经常查看 MSDN® 论坛中有关如何将一列值传递到存储过程问题。

    6.4K60

    「译文」Prometheus 中 relabel 是如何工作

    首先,relabel_configs 键可以作为刮削任务定义一部分被找到。这些重新标记步骤是在刮削发生之前应用,并且只能访问由 Prometheus 服务发现添加标签。...(正则) regex字段期望一个有效 RE2 正则表达式,用于匹配从source_label和separator字段组合中提取值。...这个块将匹配我们之前提取两个值 source_labels: [subsystem, server] separator: "@" regex: "kata@(.*)" 然而,下面这个区块将不与之前标签相匹配...replacement(替换) 如果提取值与给定 regex匹配,那么replacement就会通过执行 regex 替换和利用任何先前定义捕获组而得到填充。...回到我提取值,以及像这样一个块: source_labels: [subsystem, server] separator: "@" regex: "(.*)@(.*)" replacement:

    6.4K20
    领券