精华内容
下载资源
问答
  • 正则表达式代码生成

    2015-08-08 17:27:03
    正则表达式的强大众所周知,它令程序员的头痛程度也数一数二的。最近我发现了一个网站,txt2re,能够自动为你生成正则表达式,而且很灵活,在这里推荐一下。 网址: http://www.txt2re.com/index-java.php3   ...

    正则表达式的强大众所周知,它令程序员的头痛程度也数一数二的。最近我发现了一个网站,txt2re,能够自动为你生成正则表达式,而且很灵活,在这里推荐一下。

    网址: http://www.txt2re.com/index-java.php3

     

    第一步,输入你想要转成正则表达式的字符串,点击"show matches"

    第二步,看到下面花花绿绿的格子了吗?它是自动生成的N种正则匹配可能。比如1999-12-1可以匹配成数字-数字-数字,也可以匹配成yyyymmdd(年份时间)。你可以根据自己的需要,点击相应的花格子(花格子表示表达式类型,左边类型匹配查找,右边准确字符匹配)

    (注意至少要点击一个才能进入下一步)

    最后一步,选择你的编程语言(java, c, python, C++),然后就能看到生成的正则表达式啦!

    搜索  http://blog.csdn.net 链接

    #!/usr/bin/python
    # URL that generated this code:
    # http://www.txt2re.com/index-python.php3?s=http://blog.csdn.net&1
    
    import re
    
    txt='http://blog.csdn.net'
    
    re1='((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))'	# HTTP URL 1
    
    rg = re.compile(re1,re.IGNORECASE|re.DOTALL)
    m = rg.search(txt)
    if m:
        httpurl1=m.group(1)
        print "("+httpurl1+")"+"\n"
    
    #-----
    # Paste the code into a new python file. Then in Unix:'
    # $ python x.py 
    #-----


    展开全文
  • AST语法树自己写代码解析的话就比较麻烦,有现成的库可以解析PHP,就像webpack就是自己解析js的语法代码,编译成各种版本的可用代码 githubhttps://github.com/josdejong/mathjs ExtensionDescription ...

    2019年2月20日09:18:22

     

    AST语法树自己写代码解析的话就比较麻烦,有现成的库可以解析PHP,就像webpack就是自己解析js的语法代码,编译成各种版本的可用代码

    github https://github.com/josdejong/mathjs

     

    ExtensionDescription
    mathsteps A step-by-step math solver library that is focused on pedagogy (how best to teach). The math problems it focuses on are pre-algebra and algebra problems involving simplifying expressions.
    mathjs‑expression‑parser This custom build of mathjs contains just the expression parser and basic arithmetic functions for numbers. About four times as small as the full mathjs library.
    mathjs-simple-integral Extends Math.js to be able to compute simple integrals.
    math.diff.js Symbolic differentiation plugin for Math.js
    postcss-math PostCSS plugin for making calculations with math.js

     

     没有办法,自己去实现  前缀,中缀,后缀表达式来实现解析字符串,对于简单的加减乘除都是比较容易的,但是需要支持一些复杂一点逻辑的计算就比较麻烦,比如开方,乘方等

     

    其他一些解析工具基本都是java ,c,cpp的

    又尝试找了一些工具,发现JavaScript里面有一些,但是不符合我的个人需求,但是可以满足大部分,简单数学字符数解析和计算

    http://mathjs.org   

    PHP可用的库

    composer require nikic/php-parser

    一直在更新可以使用

    namespace App\Http\Controllers\Data\V2;
    
    use App\Http\Controllers\Data\V2\BaseController as Base;
    
    use PhpParser\Error;
    use PhpParser\NodeDumper;
    use PhpParser\ParserFactory;
    
    class CommonController extends Base {
    
        public static function index(Request $Request) {
            $code = <<<CODE
    <?php
    ((99 + 1)*4-1);
    CODE;
            $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
            try {
                $ast = $parser->parse($code);
            } catch (Error $error) {
                echo "Parse error: {$error->getMessage()}\n";
                return;
            }
    
            $dumper = new NodeDumper;
            echo $dumper->dump($ast);

    结果

    我是使用pre打印的

    array(
        0: Stmt_Expression(
            expr: Expr_BinaryOp_Minus(
                left: Expr_BinaryOp_Mul(
                    left: Expr_BinaryOp_Plus(
                        left: Scalar_LNumber(
                            value: 99
                        )
                        right: Scalar_LNumber(
                            value: 1
                        )
                    )
                    right: Scalar_LNumber(
                        value: 4
                    )
                )
                right: Expr_BinaryOp_Plus(
                    left: Scalar_LNumber(
                        value: 1
                    )
                    right: Scalar_LNumber(
                        value: 2
                    )
                )
            )
        )
    )

     

    基本就可以达到语法树解析,元素自己解析就可以了,但是支持的运算符只能支持官方已有的运算符,特殊的运算符或者自定义的运算符,得自己标记去解析,特别复杂的需要自己根据解析的ast去重新转换成自己实际业务的需求

    如果你需要添加一个vistor 遍历真个ast树 ,并获取,修改数据 

     

    <?php
    
    namespace App\Service;
    
    use PhpParser\NodeVisitorAbstract;
    use PhpParser\Node;
    
    class Visitor extends NodeVisitorAbstract {
    
        public $data;
        public $operator;
    
        public function __construct() {
            $this->data = new \SplStack();
            $this->operator = new \SplStack();
        }
    
        public function leaveNode(Node $node) {
            //所有的符号
            if ($node instanceof Node\Expr) {
                $this->operator->push($node->getType());
            }
            //所有运算符
    //        if ($node instanceof Node\Expr\BinaryOp) {
    //            $this->operator->push($node->getType());
    //        }
    //        $this->operator->push($node->getType());
            if ($node instanceof Node\Scalar) {
                $this->data->push((string) $node->value);
            }
        }
    
        public function getData() {
            return $this->data;
        }
    
        public function getOperator() {
            return $this->operator;
        }
    
    }

    然后在解析ast树的代码添加vistor

     

       public function TransformToAst($string = '') {
            try {
                if (empty($string)) {
                    throw new \Exception('公式不能为空');
                }
                $code = <<<CODE
    <?php
    $string;
    CODE;
                $ParserFactory = new ParserFactory();
                $parser = $ParserFactory->create(ParserFactory::PREFER_PHP7);
                $ast = $parser->parse($code);
    
                $traverser = new NodeTraverser;
                $Visitor = new Visitor();
                $traverser->addVisitor($Visitor);
                
                $modifiedStmts = $traverser->traverse($ast);
                p($Visitor->getOperator());
                pp($Visitor->getData());
    //            pp($modifiedStmts);
    //           
                die;
    
    
                if (empty($ast_object)) {
                    throw new \Exception('解析表达式为空');
                }
                $ast_new = self::ParseAstToArray($ast_object['0']);
                return $ast_new;
            } catch (\Exception $e) {
                throw new \Exception($e->getMessage() . $e->getFile() . $e->getLine());
            }
        }

    其他提供的很多工具类,但是缺少demo实例,让处入手的人很难直接上手使用

     参考 https://github.com/nikic/PHP-Parser/blob/master/doc/component/Walking_the_AST.markdown 以后有时间在翻译一下文档

    Microsoft/tolerant-php-parser

    这个微软的库

    转载于:https://www.cnblogs.com/zx-admin/p/10404624.html

    展开全文
  • Quartz中时间表达式的设置-----corn表达式 时间格式: , 分别对应: 秒>分>小时>日>月>周>年,  举例: 1.每天什么时候执行:  0 59 23 * * ?: 如下为每天23:59:00开始执行  0 1,2,3 11,12 * * ? : 每天11:01,...

    Quartz中时间表达式的设置-----corn表达式

    时间格式: <!-- s m h d m w(?) y(?) -->,   分别对应: 秒>分>小时>日>月>周>年, 

    举例:

    1.每天什么时候执行:

           <value>0 59 23 * * ?</value>: 如下为每天23:59:00开始执行

          <value>0 1,2,3 11,12 * * ? </value>: 每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务

    2.每隔多久执行:

     

    汇总说明:

    Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下:

    ●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”;

    ●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符;

    ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12;

    ●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五;

    ●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;

    ==================================================

    Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。

    在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的CronTrigger 在计划的时间里会与 job 关联上。

    另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域(分、时、日、月和周),Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。

     

    表 5.1. Quartz Cron 表达式支持到七个域
    名称 是否必须 允许值 特殊字符
    0-59 , - * /
    0-59 , - * /
    0-23 , - * /
    1-31 , - * ? / L W C
    1-12 或 JAN-DEC , - * /
    1-7 或 SUN-SAT , - * ? / L C #
    空 或 1970-2099 , - * /


    月份和星期的名称是不区分大小写的。FRI 和 fri 是一样的。

    域之间有空格分隔,这和 UNIX cron 一样。无可争辩的,我们能写的最简单的表达式看起来就是这个了:

    * * * ? * *

    这个表达会每秒钟(每分种的、每小时的、每天的)激发一个部署的 job。

    ·理解特殊字符

    同 UNIX cron 一样,Quartz cron 表达式支持用特殊字符来创建更为复杂的执行计划。然而,Quartz 在特殊字符的支持上比标准 UNIX cron 表达式更丰富了。

    * 星号

    使用星号(*) 指示着你想在这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发这个 trigger。

    表达式样例:

    0 * 17 * * ?

    意义:每天从下午5点到下午5:59中的每分钟激发一次 trigger。它停在下午 5:59 是因为值 17 在小时域上,在下午 6 点时,小时变为 18 了,也就不再理会这个 trigger,直到下一天的下午5点。

    在你希望 trigger 在该域的所有有效值上被激发时使用 * 字符。

    ? 问号

    ? 号只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为? 字符是 "我并不关心在该域上是什么值。" 这不同于星号,星号是指示着该域上的每一个值。? 是说不为该域指定值。

    不能同时这两个域上指定值的理由是难以解释甚至是难以理解的。基本上,假定同时指定值的话,意义就会变得含混不清了:考虑一下,如果一个表达式在日域上有值11,同时在周域上指定了WED。那么是要 trigger 仅在每个月的11号,且正好又是星期三那天被激发?还是在每个星期三的11号被激发呢?要去除这种不明确性的办法就是不能同时在这两个域上指定值。

    只要记住,假如你为这两域的其中一个指定了值,那就必须在另一个字值上放一个 ?。

    表达式样例:

    0 10,44 14 ? 3 WEB

    意义:在三月中的每个星期三的下午 2:10 和 下午 2:44 被触发。

    , 逗号

    逗号 (,) 是用来在给某个域上指定一个值列表的。例如,使用值 0,15,30,45 在秒域上意味着每15秒触发一个 trigger。

    表达式样例:

    0 0,15,30,45 * * * ?

    意义:每刻钟触发一次 trigger。

    / 斜杠

    斜杠 (/) 是用于时间表的递增的。我们刚刚用了逗号来表示每15分钟的递增,但是我们也能写成这样0/15。

    表达式样例:

    0/15 0/30 * * * ?

    意义:在整点和半点时每15秒触发 trigger。

    - 中划线

    中划线 (-) 用于指定一个范围。例如,在小时域上的 3-8 意味着 "3,4,5,6,7 和 8 点。" 域的值不允许回卷,所以像 50-10 这样的值是不允许的。

    表达式样例:

    0 45 3-8 ? * *

    意义:在上午的3点至上午的8点的45分时触发 trigger。

    L 字母

    L 说明了某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。例如,当月域上指定了JAN 时,在日域上的L会促使 trigger 在1月31号被触发。假如月域上是SEP,那么 L 会预示着在9月30号触发。换句话说,就是不管指定了哪个月,都是在相应月份的时最后一天触发 trigger。

    表达式 0 0 8 L * ? 意义是在每个月最后一天的上午 8:00 触发 trigger。在月域上的 * 说明是 "每个月"。

    当 L 字母用于周域上,指示着周的最后一天,就是星期六 (或者数字7)。所以如果你需要在每个月的最后一个星期六下午的 11:59 触发 trigger,你可以用这样的表达式0 59 23 ? * L。

    当使用于周域上,你可以用一个数字与 L 连起来表示月份的最后一个星期 X。例如,表达式 0 0 12 ? * 2L 说的是在每个月的最后一个星期一触发 trigger。

     

    不要让范围和列表值与 L 连用

    虽然你能用星期数(1-7)与 L 连用,但是不允许你用一个范围值和列表值与 L 连用。这会产生不可预知的结果。


    W 字母

    W 字符代表着平日 (Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。例如,日域中的15W 意味着 "离该月15号的最近一个平日。" 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一(这个例子中是17号)离15号更近。(译者Unmi注:不会在17号触发的,如果是15W,可能会是在14号(15号是星期六)或者15号(15号是星期天)触发,也就是只能出现在邻近的一天,如果15号当天为平日直接就会当日执行)。W只能用在指定的日域为单天,不能是范围或列表值。

    # 井号

    # 字符仅能用于周域中。它用于指定月份中的第几周的哪一天。例如,如果你指定周域的值为6#3,它意思是某月的第三个周五 (6=星期五,#3意味着月份中的第三周)。另一个例子2#1意思是某月的第一个星期一 (2=星期一,#1意味着月份中的第一周)。注意,假如你指定#5,然而月份中没有第 5 周,那么该月不会触发。

    此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式,但下面的应该为满足你的业务需求提供了足够的例子。

    ·分钟的 Cron 表达式

     

    表 5.1. 包括了分钟频度的任务计划 Cron 表达式
    用法 表达式
    每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 0 * 17 * * ?
    每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 0 0/5 23 * * ?
    每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 0 0/5 15,18 * * ?
    每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 0 0-5 5 * * ?


    ·日上的 Cron 表达式


    表 5.2. 基于日的频度上任务计划的 Cron 表达式
    用法 表达式
    每天的 3:00 AM 0 0 3 * * ?
    每天的 3:00 AM (另一种写法) 0 0 3 ? * *
    每天的 12:00 PM (中午) 0 0 12 * * ?
    在 2005 中每天的 10:15 AM 0 15 10 * * ? 2005


    ·周和月的 Cron 表达式

    表 5.3. 基于周和/或月的频度上任务计划的 Cron 表达式
    用法 表达式
    在每个周一,二, 三和周四的 10:15 AM 0 15 10 ? * MON-FRI
    每月15号的 10:15 AM 0 15 10 15 * ?
    每月最后一天的 10:15 AM 0 15 10 L * ?
    每月最后一个周五的 10:15 AM 0 15 10 ? * 6L
    在 2002, 2003, 2004, 和 2005 年中的每月最后一个周五的 10:15 AM 0 15 10 ? * 6L 2002-2005
    每月第三个周五的 10:15 AM 0 15 10 ? * 6#3
    每月从第一天算起每五天的 12:00 PM (中午) 0 0 12 1/5 * ?
    每一个 11 月 11 号的 11:11 AM 0 11 11 11 11 ?
    三月份每个周三的 2:10 PM 和 2:44 PM 0 10,44 14 ? 3 WED


    八. 创建一个即刻触发的 Trigger

    有时候,你需要立即执行一个 job。例如,想像一下,你正在构建一个 GUI 程序并允许用户能立刻执行。另一个例子,你或许已经检测到了某个 Job 未执行成功,因此你想要即刻重跑一次。在 Quartz 1.5,有几个方法被加入到了TriggerUtils 类中,使得实现那些事很容易了。代码 5.4 展示了如何部署一个 job,只让它立即执行一次。


    22222222222222222222222222222222222222


    1. 字段 允许值 允许的特殊字符     
    2. 秒 0-59 , - * /     
    3. 分 0-59 , - * /     
    4. 小时 0-23 , - * /     
    5. 日期 1-31 , - * ? / L W C     
    6. 月份 1-12 或者 JAN-DEC , - * /     
    7. 星期 1-7 或者 SUN-SAT , - * ? / L C #     
    8. 年(可选) 留空, 1970-2099 , - * /     
    9. 表达式意义     
    10. "0 0 12 * * ?" 每天中午12点触发     
    11. "0 15 10 ? * *" 每天上午10:15触发     
    12. "0 15 10 * * ?" 每天上午10:15触发     
    13. "0 15 10 * * ? *" 每天上午10:15触发     
    14. "0 15 10 * * ? 2005" 2005年的每天上午10:15触发     
    15. "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发     
    16. "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发     
    17. "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发     
    18. "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发     
    19. "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:102:44触发     
    20. "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发     
    21. "0 15 10 15 * ?" 每月15日上午10:15触发     
    22. "0 15 10 L * ?" 每月最后一日的上午10:15触发     
    23. "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发     
    24. "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发     
    25. "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发     
    26. 每天早上6点     
    27. 0 6 * * *     
    28. 每两个小时     
    29. 0 */2 * * *     
    30. 晚上11点到早上8点之间每两个小时,早上八点     
    31. 0 23-7/28 * * *     
    32. 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点     
    33. 0 11 4 * 1-3     
    34. 11日早上4点     
    35. 0 4 1 1 *     
    36.   
    37. 有些子表达式能包含一些范围或列表    
    38. 例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”    
    39.   
    40. “*”:字符代表所有可能的值    
    41. 因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天    
    42.   
    43. “/”:字符用来指定数值的增量    
    44. 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ;   
    45. 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“32343”)的含义一样    
    46.   
    47. “?”:字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值    
    48. 2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”    
    49.   
    50. “?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。 
      月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号来表明不想设置那个字段。
    51.   
    52. “L”: 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写    
    53.   
    54. 但是它在两个子表达式里的含义是不同的。    
    55.   
    56. 在天(月)子表达式中,“L”表示一个月的最后一天 ,   
    57. 在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT    
    58.   
    59. 如果在“L”前有具体的内容,它就具有其他的含义了    
    60.   
    61. 例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五    
    62.   
    63. 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题   

    展开全文
  • 定时器的时间表达式

    千次阅读 2018-07-31 12:17:58
    因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天 “/”:字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ;  ...

    字段 允许值 允许的特殊字符   

    秒 0-59 , - * /   

    分 0-59 , - * /   

    小时 0-23 , - * /   

    日期 1-31 , - * ? / L W C   

    月份 1-12 或者 JAN-DEC , - * /   

    星期 1-7 或者 SUN-SAT , - * ? / L C #   

    年(可选) 留空, 1970-2099 , - * /   

    表达式意义   

    "0 0 12 * * ?" 每天中午12点触发   

    "0 15 10 ? * *" 每天上午10:15触发   

    "0 15 10 * * ?" 每天上午10:15触发   

    "0 15 10 * * ? *" 每天上午10:15触发   

    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发   

    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发   

    "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发   

    "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发   

    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发   

    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发   

    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发   

    "0 15 10 15 * ?" 每月15日上午10:15触发   

    "0 15 10 L * ?" 每月最后一日的上午10:15触发   

    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发   

    "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发   

    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发   

    每天早上6点   

    0 6 * * *   

    每两个小时   

    0 */2 * * *   

    晚上11点到早上8点之间每两个小时,早上八点   

    0 23-7/2,8 * * *   

    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点   

    0 11 4 * 1-3   

    1月1日早上4点   

    0 4 1 1 *   

    有些子表达式能包含一些范围或列表  

    例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”  

    “*”:字符代表所有可能的值  

    因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天  

    “/”:字符用来指定数值的增量  

    例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ; 

    在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样  

    “?”:字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值  

    当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”  

    “L”: 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写  

    但是它在两个子表达式里的含义是不同的。  

    在天(月)子表达式中,“L”表示一个月的最后一天 , 

    在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT  

    如果在“L”前有具体的内容,它就具有其他的含义了  

    例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五  

    注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

    http://cron.qqe2.com/  在线校验地址 ... 

    展开全文
  • Quartz中时间表达式的设置-----corn表达式 时间格式: , 分别对应: 秒>分>小时>日>月>周>年,  举例: 1.每天什么时候执行:  0 59 23 * * ?: 如下为每天23:59:00开始执行  0 1,2,3 11,12 * * ? : 每天11:01,...
  • 利用正则表达式统计代码中的(代码行数,注释行数,空白行数)利用正则表达式获取一个网页中所有的邮箱地址
  • Visual Studio中使用正则表达式进行代码规范的检查 温辉敏(wenhm@sina.com) 2011-1-12午   项目中需要检查团队成员写的代码不符合代码规范的地方并予以修正过来,由于代码比较多,靠人眼一行行代码去看是很...
  • 具体时间转换cron表达式

    千次阅读 2018-11-07 14:38:14
    一个具体时间转换cron表达式 示例代码 package com.alex.callback; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 日期转化为...
  • Quartz中时间表达式的设置-----corn表达式 时间格式: , 分别对应: 秒>分>小时>日>月>周>年,  举例: 1.每天什么时候执行: 0 59 23 * * ?: 如下为每天23:59:00开始执行 0 1,2,3 11,12 * * ? : 每天11:01,11:02,11...
  • 利用正则表达式替换多行代码

    千次阅读 2012-08-31 14:35:13
    前段时间需要批量替换代码,就写了段正则表达式来处理。存着下次用。 整个项目中需要替换的代码: // the line below is added for pagination StringBuffer pathBuffer = new StringBuffer(); path...
  • Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知)   时间格式: , 分别对应: 秒>分>小时>日>月>周>年,  举例: 1.每天...
  • cron表达式转换为时间格式

    千次阅读 2018-08-17 14:58:36
    说明:代码是基于当天零点,生成今天的所有的cron表达式对应的时间。 废话不说,上代码(大神勿喷)。 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; ...
  • 正则表达式提取时间

    千次阅读 2016-09-20 14:13:19
    时间的各种格式都可以通过正则表达式来匹配,例如我们想精确匹配HH:mm的时间,即包含小时和分钟,可以使用下面的表达式:^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$更多时候我们想从字符串中提取,而不是完全匹配...
  • 引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。 1、Quartz cron 表达式支持七个域如下: 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , 
  • 计算Cron表达式执行时间

    千次阅读 2019-08-19 14:12:41
    计算Cron表达式执行时间
  • 项目中要用到定时任务,就直接...后来自己手工执行了一下,但是手工执行也不是个事啊,然后跟踪进去看了下解析时间表达式代码 网上很多都是如下解说的cron时间表达式: 都说的是 用英文或者 数字,数字 1=SUN ...
  • Quartz中时间表达式的设置-----cor…

    千次阅读 2017-10-13 16:35:43
    Quartz中时间表达式的设置-----corn表达式 (转) Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知)   时间格式: ,  分别对应: 秒>...
  • 1:单纯是从HTML中格式化时间,使用 &lt;fmt:formatDatevalue="${templateUnit.creTime}" pattern="yyyy-MM-dd"/&gt; 如果需要限制样式,那么这样也是可以的。如下: &lt;input ...
  • Quartz中时间表达式的设置-----corn表达式 时间格式: , 分别对应: 秒>分>小时>日>月>周>年,  举例: 1.每天什么时候执行:  0 59 23 * * ?: 如下为每天23:59:00开始执行  0 1,2,3 11,12 * * ? : 每天11:01,...
  • JAVA将cron表达式转date类型时间

    千次阅读 2018-12-04 10:51:24
    最近工作中需要判断用户设置的CRON表达式的第一次执行时间是在什么时候,于是用到了CRON表达式对于DATE类型时间的转换,但是在网上找了一下,虽然找到了方法,但是由于没有仔细讲解,差点错过。  所以今天将那位...
  • spring实战代码之解析CRON表达式

    千次阅读 2020-04-09 19:46:56
    spring实战代码之解析CRON表达式 如果我们要用spring的定时器功能,那么一般会用CRON表达式,事实上,每个框架实现的CRON解析还不同,所以需要用相应的解析规则: import org.springframework.scheduling.support....
  • 正则表达式,正则表达式校验日期,正则表达式校验时间‘ title :使用正则表达式校验时间,精确到秒,包括年月日时分秒,14位格式精确校验,正则表达式精确校验时间

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457,557
精华内容 183,022
关键字:

时间表达式代码