0

次のような情報を含む長い文字列があります。

|infoId-*-info||infoId-*-info||infoId-*-info| ...

キャラクターを区切り文字として使用していて、'-*-'キャラクターの右側で検索したいのですが、一致する場合'-*-'は全体が返されるはずですが、とにかくそれを行うことはできますか?infoId-*-infoinfo

前もって感謝します

例:

これは私の文字列です:

|8d9f9a0g9r8ad8f-*-sedat||0sdf7a89s9d0wg-*-derya||9g7a6w6e7d89awwe-*-caner|

この文字列の場合、検索値が文字列"edat"全体を返す方法であり、検索値が含まれている文字の左側があるため、検索値が返されるべき8d9f9a0g9r8ad8f-*-sedatではありません。この例をサポートするjsfiddleリンクを教えていただければ、時間を割いていただきありがとうございます。"s"0sdf7a89s9d0wg-*-derya"-*-""s"

4

2 に答える 2

1

の線に沿って何かが必要なように聞こえます

/((?:infoId)\/YOUR_REGEX_FOR_INFO)\s/

infoId(私たちはあなたのとがどのように構成されているかわかりませんinfo)。

OPによって追加された例に従って編集

あなたは(のためにedat)を使うことができます:

/\|([^-]+-\*-[^|]*edat[^|]*\|/

使用している言語はわかりませんが、「グローバル」フラグを使用して、文字列内のすべての一致を一度に取得できます。JSの場合はになります/\|([^-]+-\*-[^|]*edat[^|]*\|/g

于 2012-04-19T11:16:55.020 に答える
0

これを試して:

(?s)(?<=/)[^/]+(?=/|$)

説明:

<!--
(?s)(?<=/)[^/]+(?=/|$)

Options: ^ and $ match at line breaks

Match the remainder of the regex with the options: dot matches newline (s) «(?s)»
Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=/)»
   Match the character “/” literally «/»
Match any character that is NOT a “/” «[^/]+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=/|$)»
   Match either the regular expression below (attempting the next alternative only if this one fails) «/»
      Match the character “/” literally «/»
   Or match regular expression number 2 below (the entire group fails if this one fails to match) «$»
      Assert position at the end of a line (at the end of the string or before a line break character) «$»
-->
于 2012-04-19T11:16:56.090 に答える