3

PDFドキュメントからテキストを抽出しました。.. Javaを使用して特定のフィールドを抽出したい..

テキストの部分..

US00RE44697E
(i9) 米国
(12) 再発行特許 (10) 特許番号: RE44,697 E
Jones et al. (45) 再発行特許の日付: 2014 年 1 月 7 日
(54) ENCRYPTIONPROCESSORWITH SHARED
MEMORY INTERCONNECT
(75) 発明者: David E.Jones, Ottawa (CA); Cormac
MO'Connell, Carp (CA)
(73) 譲受人: Mosaid Technologies Incorporated,
Ottawa, Ontario (CA)
(21) Appl.No.: 13/603,137
(22) 出願日: 2012 年 9 月 4 日
関連する米国特許文書の
再発行of:
(64) 特許番号:
発行:
Appl. No.:
出願番号:
6,088,800
2000 年 7 月 11 日
09/032,029
1998 年 2 月 27 日
(51) 国際CI。
G06F 21/00 (2013.01)
(52) US CI。
USPC .............713/189; 713/190; 713/193; 380/28;
380/33; 380/52
(58) 分類検索の分野
なし

今、私の使命は、そこからフィールドを抽出し、文字列に与えることです..それは

テキスト(10) Patent Number: RE44,697 Eは次のように抽出されますString pat_no= " RE44,697 E"

テキスト(54) ENCRYPTIONPROCESSORWITH SHARED MEMORY INTERCONNECTは次のように抽出されますString title= "ENCRYPTIONPROCESSORWITH SHARED MEMORY INTERCONNECT"

非常に不規則なテキスト ブロック

(64) 特許番号:
発行:
Appl. No.:
出願番号:
6,088,800
2000 年 7 月 11 日
09/032,029
1998 年 2 月 27 日

として抽出する必要があります

String pat_no_org = "6,088,800";
String issued = "jul.11,2000" 
String filed = "feb 27 ,1998"
......

このような..

私の仕事

最初に string.split 、 string.substring 、 string,indexof 、さらには apache string utils を使用しましたが、何も役に立ちませんでした..テキストが散在しているため、上記の方法は役に立ちません..正規表現も試しましたが、非常にそれが苦手でプログラミングができません。

Java を使用して目的を達成する方法を教えてください。

4

1 に答える 1

2

正規表現では、3 つの部分に分割します。

1.)(10) Patent Number正規表現は次のようになります。

\(10\)\s*Patent Number:\s*([\w,]+)

Java 文字列として:

"\\(10\\)\\s*Patent Number:\\s*([\\w,]+)"

括弧で囲まれた最初のグループの一致は になります[1]


2.)(54) ENCRYPT...

パターンは次のようになります。

(?s)\(54\)\s*(.*?)\s*(?=\(\d|$\))

Java 文字列として:

"(?s)\\(54\\)\\s*(.*?)\\s*(?=\\(\\d|$\\))"
  • (?s)s 修飾子は、ドットが改行にも一致する Pattern.DOTALL と同じです。
  • (?=\(\d|$\))先読みを使用して、別の数字または文字列 end (末尾のアンカー) が続くまで、任意の量の任意の文字を(.*?) 遅延一致させます。(|$

3.) 他の必要な 3 つの部分については、パターンを使用して入力の書式設定を反映しようとします。これには、すべてのデータが互換性を持って構築されている必要があります。パターンは次のようになります。

(?s)\(64\).*?Filed:\s*([\d,]+)\s*(\w+\.\s*\d+,\s*\d+)\s*\n[\d+][^\n]+\n\s*(\w+\.\s*\d+,\s*\d+)

Java 文字列として:

"(?s)\\(64\\).*?Filed:\\s*([\\d,]+)\\s*(\\w+\\.\\s*\\d+,\\s*\\d+)\\s*\\n[\\d+][^\\n]+\\n\\s*(\\w+\\.\\s*\\d+,\\s*\\d+)"
  • \nは改行に一致します。

一致は、たとえば[1]6,088,800 たとえば[2]2000年 7 月 11 日、[3]たとえば1998 年 2 月 27 日になります。

正規表現を使い始めるには、これは一度に多すぎる情報です:)

于 2014-01-14T16:56:51.747 に答える