Regex 正则表达式,用于查找带有“reasonal”的字符串;“年/年”;图案

Regex 正则表达式,用于查找带有“reasonal”的字符串;“年/年”;图案,regex,icu,Regex,Icu,我正在搜索一个非常特定的正则表达式,它将帮助我查找符合以下规则的字符串: 字符串必须包含关键字“Year”或“Year” 关键字需要用非字母与其他文本分开,或者关键字在所有大写字母中,或者第一个字母在字符串中大写,否则会混合大小写 关键字必须位于字符串的开头或结尾 例如,我希望正则表达式匹配以下字符串: Order YEAR OrderYear Order_YEAR ORDER_YEAR order year YEAR_Order YearOrder 但不是这些: orderyear ORD

我正在搜索一个非常特定的正则表达式,它将帮助我查找符合以下规则的字符串:

  • 字符串必须包含关键字“Year”或“Year”
  • 关键字需要用非字母与其他文本分开,或者关键字在所有大写字母中,或者第一个字母在字符串中大写,否则会混合大小写
  • 关键字必须位于字符串的开头或结尾
  • 例如,我希望正则表达式匹配以下字符串:

    Order YEAR
    OrderYear
    Order_YEAR
    ORDER_YEAR
    order year 
    YEAR_Order
    YearOrder
    
    但不是这些:

    orderyear
    ORDERYEAR
    yearning
    Order_Year_Test
    
    到目前为止,我唯一能想到的是:

    ^YEAR|YEAR$|^Year|Year$
    
    它适用于大多数情况,但对于“订单年”和“订单年”示例返回相反的输出。我需要某种表示大小写规则的正则表达式

    具体来说,我使用的是ICU的regex库(但只是一般的regex建议就可以了)

    感谢您的帮助,

    说明 此表达式将:

    • 匹配所有示例案例,同时避免不需要的案例
    • 遵守java正则表达式引擎
    注意:这确实使用了
    x
    选项,该选项忽略表达式中的空格和注释

    (?:^|\s)(?:Year|YEAR)(?:\s|\Z|$)  # match no prefix or suffix
    |
    (?:^|\s)[A-Z][a-z]+[^a-zA-Z\d]?(?:Year|YEAR)(?:\s|\Z|$) # match title case prefix
    |
    (?:^|\s)[A-Z]+[^a-zA-Z\d\s](?:Year|YEAR)(?:\s|\Z|$)  # match all uppercase prefix
    |
    (?:^|\s)[a-z]+[^a-zA-Z\d](?:year)(?:\s|\Z|$)  # match all lower case prefix and keyword
    
    |
    (?:^|\s)(?:Year|YEAR)[^a-zA-Z\d]?[A-Z][a-z]+(?:\s|\Z|$) # match title case suffix
    |
    (?:^|\s)(?:Year|YEAR)[^a-zA-Z\d\s][A-Z]+(?:\s|\Z|$)  # match all uppercase suffix
    
    或作为单个字符串: 以下代码:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::年年年(年)年年年)年(年)年)年(年)年)年(年)年(年)年)年(年)年)年(年)年)年)年(年)年)年(年)年)年)年(年)年(年)年)年)年(年)年)年)年(年)年)年)年(年)年)年)年(月(月)年)年)年)年(年)年)月(月)年)年)月(月)年)月(月)年)月(月)月)日(月)月)月)年(年)(年)(年)(年)(年)(年)(年)(年)(年)(年)年

    例子 实例:

    示例文本

    Order YEAR
    OrderYear
    Order_YEAR
    ORDER_YEAR
    order year 
    YEAR_Order
    YearOrder
    But not these:
    
    orderyear
    ORDERYEAR
    yearning
    Order_Year_Test
    
    匹配于

    [0] => Order YEAR
    [1] => 
    OrderYear
    [2] => 
    Order_YEAR
    [3] => 
    ORDER_YEAR
    [4] => 
    order year 
    [5] => 
    YEAR_Order
    [6] => 
    YearOrder