📄 resyntax.java
字号:
public static final RESyntax RE_SYNTAX_POSIX_EGREP; /** * Predefined syntax. * Emulates POSIX extended regular expression support. */ public static final RESyntax RE_SYNTAX_POSIX_EXTENDED; /** * Predefined syntax. * Emulates POSIX basic minimal regular expressions. */ public static final RESyntax RE_SYNTAX_POSIX_MINIMAL_BASIC; /** * Predefined syntax. * Emulates POSIX extended minimal regular expressions. */ public static final RESyntax RE_SYNTAX_POSIX_MINIMAL_EXTENDED; /** * Predefined syntax. * Emulates regular expression support in the sed utility. */ public static final RESyntax RE_SYNTAX_SED; /** * Predefined syntax. * Emulates regular expression support in Larry Wall's perl, version 4, */ public static final RESyntax RE_SYNTAX_PERL4; /** * Predefined syntax. * Emulates regular expression support in Larry Wall's perl, version 4, * using single line mode (/s modifier). */ public static final RESyntax RE_SYNTAX_PERL4_S; // single line mode (/s) /** * Predefined syntax. * Emulates regular expression support in Larry Wall's perl, version 5. */ public static final RESyntax RE_SYNTAX_PERL5; /** * Predefined syntax. * Emulates regular expression support in Larry Wall's perl, version 5, * using single line mode (/s modifier). */ public static final RESyntax RE_SYNTAX_PERL5_S; /** * Predefined syntax. * Emulates regular expression support in Java 1.4's java.util.regex * package. */ public static final RESyntax RE_SYNTAX_JAVA_1_4; static { // Define syntaxes RE_SYNTAX_EMACS = new RESyntax().makeFinal(); RESyntax RE_SYNTAX_POSIX_COMMON = new RESyntax() .set(RE_CHAR_CLASSES) .set(RE_DOT_NEWLINE) .set(RE_DOT_NOT_NULL) .set(RE_INTERVALS) .set(RE_NO_EMPTY_RANGES) .makeFinal(); RE_SYNTAX_POSIX_BASIC = new RESyntax(RE_SYNTAX_POSIX_COMMON) .set(RE_BK_PLUS_QM) .makeFinal(); RE_SYNTAX_POSIX_EXTENDED = new RESyntax(RE_SYNTAX_POSIX_COMMON) .set(RE_CONTEXT_INDEP_ANCHORS) .set(RE_CONTEXT_INDEP_OPS) .set(RE_NO_BK_BRACES) .set(RE_NO_BK_PARENS) .set(RE_NO_BK_VBAR) .set(RE_UNMATCHED_RIGHT_PAREN_ORD) .makeFinal(); RE_SYNTAX_AWK = new RESyntax() .set(RE_BACKSLASH_ESCAPE_IN_LISTS) .set(RE_DOT_NOT_NULL) .set(RE_NO_BK_PARENS) .set(RE_NO_BK_REFS) .set(RE_NO_BK_VBAR) .set(RE_NO_EMPTY_RANGES) .set(RE_UNMATCHED_RIGHT_PAREN_ORD) .makeFinal(); RE_SYNTAX_POSIX_AWK = new RESyntax(RE_SYNTAX_POSIX_EXTENDED) .set(RE_BACKSLASH_ESCAPE_IN_LISTS) .makeFinal(); RE_SYNTAX_GREP = new RESyntax() .set(RE_BK_PLUS_QM) .set(RE_CHAR_CLASSES) .set(RE_HAT_LISTS_NOT_NEWLINE) .set(RE_INTERVALS) .set(RE_NEWLINE_ALT) .makeFinal(); RE_SYNTAX_EGREP = new RESyntax() .set(RE_CHAR_CLASSES) .set(RE_CONTEXT_INDEP_ANCHORS) .set(RE_CONTEXT_INDEP_OPS) .set(RE_HAT_LISTS_NOT_NEWLINE) .set(RE_NEWLINE_ALT) .set(RE_NO_BK_PARENS) .set(RE_NO_BK_VBAR) .makeFinal(); RE_SYNTAX_POSIX_EGREP = new RESyntax(RE_SYNTAX_EGREP) .set(RE_INTERVALS) .set(RE_NO_BK_BRACES) .makeFinal(); /* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */ RE_SYNTAX_ED = new RESyntax(RE_SYNTAX_POSIX_BASIC) .makeFinal(); RE_SYNTAX_SED = new RESyntax(RE_SYNTAX_POSIX_BASIC) .makeFinal(); RE_SYNTAX_POSIX_MINIMAL_BASIC = new RESyntax(RE_SYNTAX_POSIX_COMMON) .set(RE_LIMITED_OPS) .makeFinal(); /* Differs from RE_SYNTAX_POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */ RE_SYNTAX_POSIX_MINIMAL_EXTENDED = new RESyntax(RE_SYNTAX_POSIX_COMMON) .set(RE_CONTEXT_INDEP_ANCHORS) .set(RE_CONTEXT_INVALID_OPS) .set(RE_NO_BK_BRACES) .set(RE_NO_BK_PARENS) .set(RE_NO_BK_REFS) .set(RE_NO_BK_VBAR) .set(RE_UNMATCHED_RIGHT_PAREN_ORD) .makeFinal(); /* There is no official Perl spec, but here's a "best guess" */ RE_SYNTAX_PERL4 = new RESyntax() .set(RE_BACKSLASH_ESCAPE_IN_LISTS) .set(RE_CONTEXT_INDEP_ANCHORS) .set(RE_CONTEXT_INDEP_OPS) // except for '{', apparently .set(RE_INTERVALS) .set(RE_NO_BK_BRACES) .set(RE_NO_BK_PARENS) .set(RE_NO_BK_VBAR) .set(RE_NO_EMPTY_RANGES) .set(RE_CHAR_CLASS_ESCAPES) // \d,\D,\w,\W,\s,\S .makeFinal(); RE_SYNTAX_PERL4_S = new RESyntax(RE_SYNTAX_PERL4) .set(RE_DOT_NEWLINE) .makeFinal(); RE_SYNTAX_PERL5 = new RESyntax(RE_SYNTAX_PERL4) .set(RE_PURE_GROUPING) // (?:) .set(RE_STINGY_OPS) // *?,??,+?,{}? .set(RE_LOOKAHEAD) // (?=)(?!) .set(RE_STRING_ANCHORS) // \A,\Z .set(RE_CHAR_CLASS_ESC_IN_LISTS)// \d,\D,\w,\W,\s,\S within [] .set(RE_COMMENTS) // (?#) .set(RE_EMBEDDED_FLAGS) // (?imsx-imsx) .set(RE_OCTAL_CHAR) // \0377 .set(RE_HEX_CHAR) // \x1b .set(RE_NAMED_PROPERTY) // \p{prop}, \P{prop} .makeFinal(); RE_SYNTAX_PERL5_S = new RESyntax(RE_SYNTAX_PERL5) .set(RE_DOT_NEWLINE) .makeFinal(); RE_SYNTAX_JAVA_1_4 = new RESyntax(RE_SYNTAX_PERL5) // XXX .set(RE_POSSESSIVE_OPS) // *+,?+,++,{}+ .set(RE_UNICODE_CHAR) // \u1234 .set(RE_NESTED_CHARCLASS) // [a-z&&[^p-r]] .makeFinal(); } /** * Construct a new syntax object with all bits turned off. * This is equivalent to RE_SYNTAX_EMACS. */ public RESyntax() { bits = new BitSet(BIT_TOTAL); } /** * Called internally when constructing predefined syntaxes * so their interpretation cannot vary. Conceivably useful * for your syntaxes as well. Causes IllegalAccessError to * be thrown if any attempt to modify the syntax is made. * * @return this object for convenient chaining */ public RESyntax makeFinal() { isFinal = true; return this; } /** * Construct a new syntax object with all bits set the same * as the other syntax. */ public RESyntax(RESyntax other) { bits = (BitSet) other.bits.clone(); } /** * Check if a given bit is set in this syntax. */ public boolean get(int index) { return bits.get(index); } /** * Set a given bit in this syntax. * * @param index the constant (RESyntax.RE_xxx) bit to set. * @return a reference to this object for easy chaining. */ public RESyntax set(int index) { if (isFinal) throw new IllegalAccessError(SYNTAX_IS_FINAL); bits.set(index); return this; } /** * Clear a given bit in this syntax. * * @param index the constant (RESyntax.RE_xxx) bit to clear. * @return a reference to this object for easy chaining. */ public RESyntax clear(int index) { if (isFinal) throw new IllegalAccessError(SYNTAX_IS_FINAL); bits.clear(index); return this; } /** * Changes the line separator string for regular expressions * created using this RESyntax. The default separator is the * value returned by the system property "line.separator", which * should be correct when reading platform-specific files from a * filesystem. However, many programs may collect input from * sources where the line separator is differently specified (for * example, in the applet environment, the text box widget * interprets line breaks as single-character newlines, * regardless of the host platform. * * Note that setting the line separator to a character or * characters that have specific meaning within the current syntax * can cause unexpected chronosynclastic infundibula. * * @return this object for convenient chaining */ public RESyntax setLineSeparator(String aSeparator) { if (isFinal) throw new IllegalAccessError(SYNTAX_IS_FINAL); lineSeparator = aSeparator; return this; } /** * Returns the currently active line separator string. The default * is the platform-dependent system property "line.separator". */ public String getLineSeparator() { return lineSeparator; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -